Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/81.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 - Fatal编程技术网

R如何将数据框列矩阵展开为数据框列

R如何将数据框列矩阵展开为数据框列,r,R,我有下面的dataframe df,它是TERR在一个较大的dataframe上通过聚合调用生成的,该dataframe在一个列上执行了两个函数。因此,在这种情况下,计算PC1和PC2的平均值和标准误差。问题是我现在需要分别调用这些值。如果我尝试 df$PC1.mn它返回NULL,但是使用df$PC1我得到了两者的列表。我需要这些矩阵是独立的列。有没有办法做到这一点 编辑:除了第一列之外,每列都是一个由2列组成的矩阵,需要扩展为单独的列 TERR PC1.mn PC1.sem

我有下面的dataframe df,它是TERR在一个较大的dataframe上通过聚合调用生成的,该dataframe在一个列上执行了两个函数。因此,在这种情况下,计算PC1和PC2的平均值和标准误差。问题是我现在需要分别调用这些值。如果我尝试

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)