如何将 R 数据帧拆分为向量(解除绑定)

How to split a R data frame into vectors (unbind)

我对 R 比较陌生,一段时间以来一直在努力寻找解决这个问题的方法。我正在尝试获取一个数据框并基本上执行 rbind 的反向操作,以便我可以将整个数据框(并希望保留原始数据框)拆分为单独的向量,并使用 row.names 作为来源新的变量名。

所以如果我有这样的 data.frame:

      Col1  Col2 Col3
Row1   A     B    C
Row2   D     E    F
Row3   G     H    I

我希望最终结果是单独的向量:

Row1 = A B C
Row2 = D E F
Row3 = G H I

我知道我可以从 data.frame 中提取特定行的子集,但我希望将它们全部分开。就方法论而言,我可以使用 for 循环将每一行移动到一个向量中,但我不确定如何将行名称分配为变量名称。

您可以split数据集row转换为matrix后,将列表元素的名称(setNames)设置为'Row1:Row3'和使用 list2env 分配全局环境中的对象。

 list2env(setNames(split(as.matrix(df),
        row(df)), paste0("Row",1:3)), envir=.GlobalEnv)

 Row1
 #[1] "A" "B" "C"
 Row2
 #[1] "D" "E" "F"

与@akrun 的方法略有不同:

Df <- data.frame(matrix(LETTERS[1:9],nrow=3))
##
R> ls()
[1] "Df"
##
sapply(1:nrow(Df), function(x){
  assign(paste0("Row",row.names(Df)[x]),
         value=Reduce(function(x,y){c(x,y)},Df[x,]),
         envir=.GlobalEnv)
})
##
R> ls()
[1] "Df"   "Row1" "Row2" "Row3"
R> Row1
[1] "A" "D" "G"
R> Row2
[1] "B" "E" "H"
R> Row3
[1] "C" "F" "I"