2015-08-05 4 views
0

У меня много данных. Кадры, вложенные в список, и хотят получить значение строки столбца в data.frames. Вот мой MWE. Чудеса, как выполнить в R? Любая помощь будет высоко оценена. БлагодаряСреднее значение для каждой строки столбца data.frames, вложенного в список

set.seed(12345) 
df1 <- data.frame(x=rnorm(10)) 
df2 <- data.frame(x=rnorm(10)) 
ls1 <- list(df1=df1, df2=df2) 
ls1 

$df1 
      x 
1 0.5855288 
2 0.7094660 
3 -0.1093033 
4 -0.4534972 
5 0.6058875 
6 -1.8179560 
7 0.6300986 
8 -0.2761841 
9 -0.2841597 
10 -0.9193220 

$df2 
      x 
1 -0.1162478 
2 1.8173120 
3 0.3706279 
4 0.5202165 
5 -0.7505320 
6 0.8168998 
7 -0.8863575 
8 -0.3315776 
9 1.1207127 
10 0.2987237 

Что-то вроде этого один

(ls1$df1+ls1$df2)/2 


    x 
1 0.23464051 
2 1.26338903 
3 0.13066227 
4 0.03335964 
5 -0.07232227 
6 -0.50052806 
7 -0.12812949 
8 -0.30388085 
9 0.41827645 
10 -0.31029915 

Отредактировано

ls1 <- list(df=df1) 
ls2 <- list(df=df2) 

Как это (ls1$df+ls2$df)/2 можно записать более слаженно?

   x 
1 0.23464051 
2 1.26338903 
3 0.13066227 
4 0.03335964 
5 -0.07232227 
6 -0.50052806 
7 -0.12812949 
8 -0.30388085 
9 0.41827645 
10 -0.31029915 
+0

Какой у вас желаемый результат? Что вы имеете в виду со строковыми средствами одного столбца? – Heroka

ответ

2

Извлеките колонку, cbind в data.frames, и вычислить ряд означает:

rowMeans(do.call(cbind, lapply(ls1, "[", "x"))) 
+0

Спасибо @Roland за полезный ответ. Как насчет этого, когда два data.frames находятся в разных списках 'ls1 <- list (df = df1)' 'ls2 <- list (df = df2)'? – MYaseen208

+0

Объедините списки: 'c (ls1, ls2)'. Или извлеките data.frames из списков. – Roland

+0

Имейте много и переменное количество «списков» из вывода 'replicate'. – MYaseen208

1

Если нет NA значения, другой вариант будет делать поэлементно (+) с Reduce и делить на length из 'ls1'

Reduce(`+`, ls1)/length(ls1) 
#   x 
#1 0.23464051 
#2 1.26338903 
#3 0.13066227 
#4 0.03335964 
#5 -0.07232227 
#6 -0.50052806 
#7 -0.12812949 
#8 -0.30388085 
#9 0.41827645 
#10 -0.31029915 
Смежные вопросы