对所有表中数组中的每个元素求平均并返回矩阵

Rog*_*ger 3 arrays r matrix mean

我希望获得数组中每个元素的平均值。在一个简单的例子中,假设我们有这个简单的数组:

, , 1

              [,1]          [,2]          [,3]
 [1,]  2.000000000  3.000000000   1.000000000
 [2,]  6.000000000  5.000000000   2.000000000
 [3,]  8.000000000  12.00000000   4.000000000
 [4,]  12.00000000  10.00000000   4.000000000

, , 2

              [,1]          [,2]          [,3]
 [1,]  4.000000000  6.000000000   2.000000000
 [2,]  4.000000000  10.00000000   3.000000000
 [3,]  8.000000000  12.00000000   4.000000000
 [4,]  8.000000000  20.00000000   6.000000000

, , 3

              [,1]          [,2]          [,3]
 [1,]  6.000000000  9.000000000   3.000000000
 [2,]  2.000000000  15.00000000   4.000000000
 [3,]  12.00000000  18.00000000   6.000000000
 [4,]  4.000000000  30.00000000   8.000000000
Run Code Online (Sandbox Code Playgroud)

我想找到数组中所有表(?)中每一行 i、列 i 的平均值。在上面的情况下,正确的结果将是这个矩阵(抱歉,我不太擅长编数字):

              [,1]          [,2]          [,3]
 [1,]  4.000000000  6.000000000   2.000000000
 [2,]  6.000000000  10.00000000   3.000000000
 [3,]  8.000000000  12.00000000   4.000000000
 [4,]  12.00000000  20.00000000   6.000000000
Run Code Online (Sandbox Code Playgroud)

我可以“手工”进行算术:(my.array[,,1]+my.array[,,2]+my.array[,,3])/3这给出了一个矩阵,其中包含每个元素的平均值。然而,我的数据有很多NA值,像这样的函数mean()应该允许我使用na.rm=TRUE参数来处理这些缺失的值。

显然,您可以对mean(my.array[i,i,]所有表中的每个元素进行平均,但是有没有一种简单的方法可以一次计算所有元素并生成一个矩阵?我认为apply()这是一个不错的选择,但我还没有找到合适的表达方式。

Jot*_*ota 5

您正在寻找这个:

apply(data, 1:2, mean)
Run Code Online (Sandbox Code Playgroud)

  • @roger为什么不使用`apply(data, 1:2,mean, na.rm = TRUE)`? (2认同)