取平均值

时间:2016-02-27 11:49:47

标签: r average

我有一个三个数据框的列表,每个数据框有n列(本例中为6)和r行(本例中为3)。我想创建一个矩阵,其具有与列表中三个数据帧的平均值相同的维度(n * r)。因此,例如,输出矩阵的[1,1]应该是0.2470748,0.2558439和0.2439057的平均值。关于如何做到这一点的任何想法?

1 个答案:

答案 0 :(得分: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作为参数。