带有嵌入式矩阵的折叠数据框

时间:2018-10-22 14:16:37

标签: 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 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"

从某种意义上讲,但可能给下游处理代码带来麻烦(例如,ggplot2不喜欢)。如果您不知道要查看的内容,打印的表示形式也可能会造成混淆:

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

我正在寻找一种相对简单的方法来将此对象折叠为常规的三列数据框(名称为gms的名称为gx.mx.s ...)。

我知道tidyverse(group_by + summarise不会出现此问题,但是我正在寻找base-R解决方案。

0 个答案:

没有答案