如何将R数据帧拆分为向量(取消绑定)
我对R比较陌生,一直在尝试找到解决这个问题的方法。我试图获取一个数据帧,基本上与rbind相反,这样我可以将整个数据帧(希望保留原始数据帧)拆分为单独的向量,并使用row.names作为新变量名的源 如果我有一个像这样的data.frame:如何将R数据帧拆分为向量(取消绑定),r,vector,dataframe,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
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循环将每一行移动到一个向量中,但我不确定如何将行名称指定为变量名称 在转换到
矩阵后,您可以按行
拆分数据集,将列表元素的名称(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"
Df ls()
[1] “Df”
##
SAPPY(1:nrow(Df),功能(x){
分配(粘贴0(“行”,行名称(Df)[x]),
value=Reduce(函数(x,y){c(x,y)},Df[x,]),
envir=.GlobalEnv)
})
##
R> ls()
[1] “Df”“第1行”“第2行”“第3行”
R> 第1行
[1] “A”“D”“G”
R> 第2行
[1] “B”“E”“H”
R> 第3行
[1] “C”“F”“I”
请注意,根据数据中字段的类别,可能会有一些类型转换。frame@Jthorpe是的,我明白,但这里的OP想要得到这些行。在这方面总会有问题,因为我们只有列类。从这个例子中,我假设它都属于同一个类。一个选项可能是转置、转换为data.frame等…@David Arenburg感谢您捕捉到attach(as.data.frame(t(data))