R如何将数据框列矩阵展开为数据框列
我有下面的dataframe df,它是TERR在一个较大的dataframe上通过聚合调用生成的,该dataframe在一个列上执行了两个函数。因此,在这种情况下,计算PC1和PC2的平均值和标准误差。问题是我现在需要分别调用这些值。如果我尝试R如何将数据框列矩阵展开为数据框列,r,R,我有下面的dataframe df,它是TERR在一个较大的dataframe上通过聚合调用生成的,该dataframe在一个列上执行了两个函数。因此,在这种情况下,计算PC1和PC2的平均值和标准误差。问题是我现在需要分别调用这些值。如果我尝试 df$PC1.mn它返回NULL,但是使用df$PC1我得到了两者的列表。我需要这些矩阵是独立的列。有没有办法做到这一点 编辑:除了第一列之外,每列都是一个由2列组成的矩阵,需要扩展为单独的列 TERR PC1.mn PC1.sem
df$PC1.mn
它返回NULL,但是使用df$PC1
我得到了两者的列表。我需要这些矩阵是独立的列。有没有办法做到这一点
编辑:除了第一列之外,每列都是一个由2列组成的矩阵,需要扩展为单独的列
TERR PC1.mn PC1.sem PC2.mn PC2.sem
1 MENS_10 0.82030703 0.05964201 0.60991007 0.03922947
2 MENS_14 0.22284209 0.07027761 0.01079179 0.03857742
str的输出(df$PC1)
dput(df)的输出
df
是一个包含7列的data.frame,除第一列外,每列都是由2列组成的矩阵:
> str(df)
'data.frame': 19 obs. of 7 variables:
$ TERR : Factor w/ 19 levels "MENS_10","MENS_14",..: 1 2 3 4 5 6 7 8 9 10 ...
$ PC1 : num [1:19, 1:2] 0.82 0.223 1.094 1.04 0.812 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC2 : num [1:19, 1:2] 0.6099 0.0108 -0.019 0.4147 0.3864 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC3 : num [1:19, 1:2] -0.326 -0.257 -0.718 -0.658 -0.322 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC1_REF: num [1:19, 1:2] -1.79 -2.197 -0.707 0.842 -0.2 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC2_REF: num [1:19, 1:2] 0.0191 0.038 -0.4548 -0.3169 -0.2226 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC3_REF: num [1:19, 1:2] -0.786 -0.477 -1.005 -1.02 1.244 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
因此,df$PC1
是第一个矩阵,df$PC1[,1]
或dfPC1[,“mn”]
是PC1
矩阵的第一列,df$PC1[,2]
或df$PC1[,“sem”
是PC1
矩阵的第二列,等等
这将df
转换为13列的平面数据框:
do.call(data.frame, df)
df$PC[,1]和df$PC[,2]都返回NULL。可能df$PC1[[1]]
和df$PC1[[2]]
?您真的应该提供类似于str(df$PC1)
或str(df)
的东西,它们仍然是NULL。增加str(df$PC1)的输出正常,增加。请注意,实际的数据帧包含的列比我在问题中提到的要多。我试图简化原来的问题。@digEmAll将矩阵作为dara框架的组成部分嵌入是相当简单的。IIRC,I()
允许一种方法来实现这一点……感谢您简洁的回答。我将更新我的问题以反映正确的术语。
> str(df)
'data.frame': 19 obs. of 7 variables:
$ TERR : Factor w/ 19 levels "MENS_10","MENS_14",..: 1 2 3 4 5 6 7 8 9 10 ...
$ PC1 : num [1:19, 1:2] 0.82 0.223 1.094 1.04 0.812 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC2 : num [1:19, 1:2] 0.6099 0.0108 -0.019 0.4147 0.3864 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC3 : num [1:19, 1:2] -0.326 -0.257 -0.718 -0.658 -0.322 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC1_REF: num [1:19, 1:2] -1.79 -2.197 -0.707 0.842 -0.2 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC2_REF: num [1:19, 1:2] 0.0191 0.038 -0.4548 -0.3169 -0.2226 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
$ PC3_REF: num [1:19, 1:2] -0.786 -0.477 -1.005 -1.02 1.244 ...
..- attr(*, "dimnames")=List of 2
.. ..$ : NULL
.. ..$ : chr "mn" "sem"
do.call(data.frame, df)