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