数据框列表中行的总和和平均值

sum and average of rows from list of data frames

我有兴趣对数据框列表中的每一行求和。即第一行需要在列表中的所有数据框中求和。同样,第二等。 添加完成后,我想根据列表中的数据帧数取平均值。我用下面的代码(乏味)

sample_list<-list(data.frame(x=c(1:5)),data.frame(x=c(6:10)), data.frame(x=c(11:15)) ) ## sample data frame's list

sum_per_person<-matrix(nrow=nrow(sample_list[[1]]),ncol=1) ## create a matrix to store sum of each row from the list of data frames.

number_indi=nrow(sample_list[[1]]) ## number of rows are same in each data frame within the list

iterate_person=1 ## set counter 

while(iterate_person<=number_indi){ ## do a while loop

sum_temp=0 ## set to zero
for(x in 1:length(sample_list)){
## iterate over the sample list
sum_temp<-sum_temp+(sample_list[[x]])[iterate_person,]

} ## iteration ends for the list

sum_per_person[iterate_person,1]<-sum_temp
iterate_person<-iterate_person+1 ## increment 
} ## for loop ends 

## take average
sum_per_person<-sum_per_person/length(sample_list) ## final result 

有没有一种方法可以通过 lapply、应用以简单的方式完成此操作?

而不是 while 循环,R 中的一个选项是获取 list 的对应元素与 Reduce 的总和,然后除以 [= 'sample_list'

的 16=]
Reduce(`+`, sample_list)/length(sample_list)
#  x
#1  6
#2  7
#3  8
#4  9
#5 10

或者一个简洁的做法是rowMeans转换成单个data.frame

rowMeans(do.call(cbind, sample_list))