r-按行和列列出的元素的总体平均值

时间:2019-05-07 09:43:43

标签: r list dataframe mean

我需要对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

有什么建议吗?

1 个答案:

答案 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