r - общее среднее значение элементов в списке по строкам и столбцам - PullRequest
1 голос
/ 07 мая 2019

Мне нужно взять общее среднее значение в каждой строке и столбце в списке 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 Ответ

1 голос
/ 07 мая 2019

Мы можем использовать Reduce, чтобы получить поэлементную сумму (+), а затем разделить на length из 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

apply(array(unlist(df_lst), c(3, 3, 3)), 1:2, mean)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...