【发布时间】:2016-04-17 06:26:39
【问题描述】:
如果我有这份清单
set.seed(123)
thelist <- list(a=data.frame(x1=rnorm(10), x2=rnorm(10)),
b=data.frame(x1=rnorm(10), x2=rnorm(10)),
c=data.frame(x1=rnorm(10), x2=rnorm(10)))
> thelist
$a
x1 x2
1 -0.56047565 1.2240818
2 -0.23017749 0.3598138
3 1.55870831 0.4007715
4 0.07050839 0.1106827
5 0.12928774 -0.5558411
6 1.71506499 1.7869131
7 0.46091621 0.4978505
8 -1.26506123 -1.9666172
9 -0.68685285 0.7013559
10 -0.44566197 -0.4727914
$b
x1 x2
1 -1.0678237 0.42646422
2 -0.2179749 -0.29507148
3 -1.0260044 0.89512566
4 -0.7288912 0.87813349
5 -0.6250393 0.82158108
6 -1.6866933 0.68864025
7 0.8377870 0.55391765
8 0.1533731 -0.06191171
9 -1.1381369 -0.30596266
10 1.2538149 -0.38047100
$c
x1 x2
1 -0.69470698 0.25331851
2 -0.20791728 -0.02854676
3 -1.26539635 -0.04287046
4 2.16895597 1.36860228
5 1.20796200 -0.22577099
6 -1.12310858 1.51647060
7 -0.40288484 -1.54875280
8 -0.46665535 0.58461375
9 0.77996512 0.12385424
10 -0.08336907 0.21594157
如何计算每个列表项的 x1 和 x2 的 mean 和 sd(例如 a:c?输出将是具有列名 mean_x1 的数据框(或对象或...)和mean_x2。每一行都对应一个列表名称(例如a:c)。我看过很多类似的帖子,但没有一个解决具体问题。
【问题讨论】:
-
三列列表中两列的均值和 sd 不会以 3x2 对象结尾
-
也可以
library(data.table) ; f <- function(x, ...) c(mean(x, ...), sd(x, ...)) ; rbindlist(thelist, idcol = "indx")[, setNames(lapply(.SD, f), c("Mean", "SD")), by = indx]