Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将R数据帧拆分为向量(取消绑定)_R_Vector_Dataframe - Fatal编程技术网

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

如何将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

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

在转换到
矩阵
后,您可以
拆分数据集,将列表元素的名称(
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))