2016-02-27 121 views
0

我有一个三个数据框的列表,每个数据框有n列(在这种情况下是6列)和r行(在这种情况下是3列)。我想创建一个与列表中三个数据帧的平均尺寸(n * r)相同的矩阵。因此,例如,输出矩阵的[1,1]应该是0.2470748,0.2558439和0.2439057的平均值。任何想法如何做到这一点?以平均值

回答

4

我们可以使用Reduce

Reduce(`+`, lis)/length(lis) 
#   [,1]  [,2]  [,3]  [,4]  [,5]  [,6] 
#[1,] 0.2489415 0.2825572 0.3033121 0.3011313 0.3560603 0.5091391 
#[2,] 0.2033602 0.2516646 0.2805718 0.2855458 0.3428526 0.4959503 
#[3,] 0.1841235 0.2362422 0.2771326 0.2821553 0.3382137 0.4888071 

或者另一种选择是apply(如在由@Ananda Mahto意见所)

apply(simplify2array(lis), c(1,2), mean) 
#  [,1]  [,2]  [,3]  [,4]  [,5]  [,6] 
#[1,] 0.2489415 0.2825572 0.3033121 0.3011313 0.3560603 0.5091391 
#[2,] 0.2033602 0.2516646 0.2805718 0.2855458 0.3428526 0.4959503 
#[3,] 0.1841235 0.2362422 0.2771326 0.2821553 0.3382137 0.4888071 

mean功能的优点是,如果有是NA值,我们可以使用na.rm=TRUE作为参数。

+1

谢谢,完美的作品! – Joseph

+0

这是[r]标签吗?从问题我不能告诉 – fedorqui

+0

@fedorqui我认为当问题发布时,有'r'标签,但它可能已被正常磨损删除。 – akrun