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

时间:2015-01-29 18:16:25

标签: r vector dataframe

我对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循环将每一行移动到一个向量中,但我并不确定如何将行名称指定为变量名称。

2 个答案:

答案 0 :(得分:2)

转换为split后,您可以row matrix数据集,将列表元素的名称(setNames)设置为' Row1:Row3&# 39;并使用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"

答案 1 :(得分:1)

与@ 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"