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

Convert dataframe into named vectors based on column names

我有以下数据框:

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

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

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

如何以编程方式执行此操作? tidyverse 解决方案特别受欢迎。

df[,'a'] 也有效

参考extract operator

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

library(tidyverse)

list2env(flatten(apply(df, 2, function(x) as.list(x))), envir = .GlobalEnv)

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

list2env(lapply(df, \(x) `<-`(names(x), x)),.GlobalEnv)

a
#> [1] 1
b
#> [1] 2
c
#> [1] 3