R 用嵌入矩阵折叠数据帧

R 用嵌入矩阵折叠数据帧,r,dataframe,R,Dataframe,在某些条件下,R生成包含矩阵作为元素的数据帧。这需要手动进行一些确定,但会发生,例如,当聚合函数返回多个值时,aggregate()调用的结果: set.seed(101) d0 <- data.frame(g=factor(rep(1:2,each=20)), x=rnorm(20)) d1 <- aggregate(x~g, data=d0, FUN=function(x) c(m=mean(x), s=sd(x))) str(d1) ## 'data.frame': 2

在某些条件下,R生成包含矩阵作为元素的数据帧。这需要手动进行一些确定,但会发生,例如,当聚合函数返回多个值时,
aggregate()
调用的结果:

set.seed(101)
d0 <- data.frame(g=factor(rep(1:2,each=20)), x=rnorm(20))
d1 <- aggregate(x~g, data=d0, FUN=function(x) c(m=mean(x), s=sd(x)))
str(d1)
## 'data.frame':    2 obs. of  2 variables:
##  $ g: Factor w/ 2 levels "1","2": 1 2
##  $ x: num [1:2, 1:2] -0.0973 -0.0973 0.8668 0.8668
##   ..- attr(*, "dimnames")=List of 2
##   .. ..$ : NULL
##  .. ..$ : chr  "m" "s"
我正在寻找一种相对简单的方法来将这个对象折叠成一个常规的三列数据帧(使用名称
g
m
s
,或者使用名称
g
x.m
x.s

我知道tidyverse不会出现这个问题(
groupby
+
summary
),但我正在寻找base-R解决方案

d1
##   g         x.m         x.s
## 1 1 -0.09731741  0.86678436
## 2 2 -0.09731741  0.86678436