如何将 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"
我对 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"