代码之家  ›  专栏  ›  技术社区  ›  nicholas

根据列名将数据帧转换为命名向量

  •  0
  • nicholas  · 技术社区  · 3 年前

    我有以下数据帧:

    df <- data.frame(a = 1, b = 2, c = 3)
    

    我想将其转换为三个命名向量:

    a <- 1
    b <- 2
    c <- 3
    

    我如何以编程方式做到这一点? tidyverse 解决方案尤其受到赞赏。

    1 回复  |  直到 3 年前
        1
  •  1
  •   AndrewGB    3 年前

    你可以这样做(尽管@MartinGal给出了一个更好的方法)。我们可以将每一列转换为列表,然后 flatten 只要有一个命名的向量,就可以保存到全局环境中。

    library(tidyverse)
    
    list2env(flatten(apply(df, 2, function(x) as.list(x))), envir = .GlobalEnv)
    
        2
  •  1
  •   PaulS    3 年前

    另一种可能的解决方案(不过你应该遵循@MartinGal的方法):

    list2env(lapply(df, \(x) `<-`(names(x), x)),.GlobalEnv)
    
    a
    #> [1] 1
    b
    #> [1] 2
    c
    #> [1] 3
    
        3
  •  0
  •   ML_Enthu    3 年前

    df[,'a'] 也行

    请参阅 extract operator