我需要对data.frames列表中的每一行和每一列取总体均值:
set.seed(1)
df_1 = data.frame(a = rnorm(3), b = rnorm(3), c = rnorm(3))
df_2 = data.frame(a = rnorm(3), b = rnorm(3), c = rnorm(3))
df_3 = data.frame(a = rnorm(3), b = rnorm(3), c = rnorm(3))
df_lst = list(df_1, df_2, df_3)
在这里,我需要执行以下操作:
mean(c(df_lst[[1]]$a[1], df_lst[[2]]$a[1], df_lst[[3]]$a[1]))
mean(c(df_lst[[1]]$a[2], df_lst[[2]]$a[2], df_lst[[3]]$a[2]))
mean(c(df_lst[[1]]$a[3], df_lst[[2]]$a[3], df_lst[[3]]$a[3]))
mean(c(df_lst[[1]]$b[1], df_lst[[2]]$b[1], df_lst[[3]]$b[1]))
mean(c(df_lst[[1]]$b[2], df_lst[[2]]$b[2], df_lst[[3]]$b[2]))
mean(c(df_lst[[1]]$b[3], df_lst[[2]]$b[3], df_lst[[3]]$b[3]))
mean(c(df_lst[[1]]$c[1], df_lst[[2]]$c[1], df_lst[[3]]$c[1]))
mean(c(df_lst[[1]]$c[2], df_lst[[2]]$c[2], df_lst[[3]]$c[2]))
mean(c(df_lst[[1]]$c[3], df_lst[[2]]$c[3], df_lst[[3]]$c[3]))
所需的输出是:
> out
a b c
1 -0.03687367 0.5853922 0.3541071
2 0.76310860 -0.6035424 0.2220019
3 0.15773067 -0.5616297 0.4546074
有什么建议吗?
答案 0 :(得分:1)
我们可以使用Reduce
来获取元素和(+
),然后除以length
的{{1}}
list
或将其转换为Reduce(`+`, df_lst)/length(df_lst)
# a b c
#1 -0.03687367 0.5853922 0.3541071
#2 0.76310860 -0.6035424 0.2220019
#3 0.15773067 -0.5616297 0.4546074
,然后使用array
apply