如果我有这个清单
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)))
Run Code Online (Sandbox Code Playgroud)
并且想要使用以下代码计算每个列表中每列的平均值.
sapply(do.call("rbind",thelist),mean)
Run Code Online (Sandbox Code Playgroud)
我怎样才能为每个列表中的每一列(a:c)计算标准偏差,因为sd没有等效函数(至少据我所知)?
任何建议将不胜感激.
基本的R解决方案将使用sapply两次.
仅限于平均值:
t(sapply(thelist, sapply, mean))
Run Code Online (Sandbox Code Playgroud)
导致
x1 x2
a 0.074625644 0.2086220
b -0.424558873 0.3220446
c -0.008715537 0.2216860
Run Code Online (Sandbox Code Playgroud)
如果你想要两个:
my_summary <- function(x){
c(mean = mean(x), sd = sd(x))
}
as.data.frame(lapply(thelist, sapply, my_summary))
Run Code Online (Sandbox Code Playgroud)
导致:
a.x1 a.x2 b.x1 b.x2 c.x1 c.x2
mean 0.07462564 0.208622 -0.4245589 0.3220446 -0.008715537 0.2216860
sd 0.95378405 1.038073 0.9308092 0.5273024 1.082518163 0.8564451
Run Code Online (Sandbox Code Playgroud)