Цель
Моя основная цель - добавить среднюю строку в, каким-то образом связав среднее значение из среднего списка в список фреймов данных, который я создал для создания фреймов данных большего размера в списке фреймов данных. Я много писал по этому вопросу, поэтому надеюсь, что вы можете мне помочь в моем случае. Если что-то неясно, прокомментируйте!
Код
Предположим, у вас есть три разных фрейма данных, которые вы хотите создать ниже:
df1 <- data.frame(aa = sample(1:10, 5, replace = TRUE),
bb = sample(1:10, 5, replace = TRUE),
cc = sample(1:10, 5, replace = TRUE),
row.names = c("a", "b", "c", "d", "e"))
df2 <- data.frame(aa = sample(1:10, 5, replace = TRUE),
bb = sample(1:10, 5, replace = TRUE),
cc = sample(1:10, 5, replace = TRUE),
row.names = c("a", "b", "c", "d", "e"))
df3 <- data.frame(aa = sample(1:10, 5, replace = TRUE),
bb = sample(1:10, 5, replace = TRUE),
cc = sample(1:10, 5, replace = TRUE),
row.names = c("a", "b", "c", "d", "e"))
Это даст следующие результаты в консоли для этого примера:
> df1 #the arrow on the left specifies the console entry
aa bb cc
a 6 9 5
b 2 6 4
c 6 2 3
d 10 4 8
e 3 1 3
> df2
aa bb cc
a 7 9 10
b 2 7 5
c 1 5 7
d 8 5 5
e 9 3 5
> df3
aa bb cc
a 2 6 8
b 3 7 7
c 1 4 2
d 4 9 9
e 8 7 3
Теперь я хочу поместить их в список, чтобы сэкономить объем работы, который мне нужно сделать (надеюсь!):
df_list <- list(df1=df1, df2=df2, df3=df3)
#Kept the names for future reference (so that I could write df_list$df1 instead of df_list[[1]]
Давать у меня респектабельный список, идентичный выходам df1-3, просто все вместе:
> df_list
$df1
aa bb cc
a 6 9 5
b 2 6 4
c 6 2 3
d 10 4 8
e 3 1 3
$df2
aa bb cc
a 7 9 10
...
Теперь я хотел создать в основном выполнение colMean
по моим данным, но я не нашел более эффективного способа сделайте это, кроме использования lapply
с mean
:
mean_lst <- lapply(df_list, function(x) {lapply(x[,1:ncol(x)], mean)}) #finding means of columns
Приведенный выше код вложен странным образом, но он дал результат, который я искал (если есть лучший способ достижения почти идентичны, не стесняйтесь комментировать это). Это дало мне интересный результат, который выглядит полезным ...? Я новичок в R, поэтому не уверен, как это правильно использовать. Взгляните на вывод mean_lst:
> mean_lst
$df1
$df1$aa
[1] 5.4
$df1$bb
[1] 4.4
...
$df3$cc
[1] 5.8
The Struggle (is.Real) и вопрос
Я пробовал rbind безрезультатно и не совсем понимаю, как я могу использовать этот вывод (или любой другой вывод), чтобы я мог вычислить средства каждого фрейма данных, не выполняя их один за другим, без необходимости извлекать фреймы данных из списка и писать идентичный код. Результат моей мечты будет выглядеть примерно так, если применить вывод mean_lst к каждому фрейму данных в df_list с помощью rbind:
> df_list$df1
aa bb cc
a 6 9 5
b 2 6 4
c 6 2 3
d 10 4 8
e 3 1 3
mean 5.4 4.4 4.6
Кто-нибудь знает, как написать такой код, если он существует? Или есть более эффективный способ записи colMeans для каждого из этих столбцов в фреймах данных в списках без необходимости явно записывать имена фреймов данных? Заранее большое спасибо!