3

很抱歉,但我无法找到一种方法来替换 3 维数组中的每一个 0,用它们所在的列的平均值来替换它们。

谢谢。所以,例如,假设我有这个数组 j

j
, , 1

      [,1] [,2]
[1,]    0    6
[2,]    1    5
[3,]    2    2

, , 2

      [,1] [,2]
[1,]   11    0
[2,]   14   12
[3,]    0   14

, , 3

     [,1] [,2]
[1,]   19   22
[2,]   20   23
[3,]   21   24

我想

j
, , 1

      [,1] [,2]
[1,]    1    6
[2,]    1    5
[3,]    2    2

, , 2

      [,1] [,2]
[1,]   11    26/3
[2,]   14   12
[3,]   25/3   14

, , 3

     [,1] [,2]
[1,]   19   22
[2,]   20   23
[3,]   21   24
4

1 回答 1

3

你可以用apply这个。

从以下数据开始:

arr <- array(0:5,dim=c(4,3,2))

, , 1

     [,1] [,2] [,3]
[1,]    0    4    2
[2,]    1    5    3
[3,]    2    0    4
[4,]    3    1    5

, , 2

     [,1] [,2] [,3]
[1,]    0    4    2
[2,]    1    5    3
[3,]    2    0    4
[4,]    3    1    5

你可以做 :

apply(arr, c(2,3),function(v) { v[v==0] <- mean(v); v})

这使 :

, , 1

     [,1] [,2] [,3]
[1,]  1.5  4.0    2
[2,]  1.0  5.0    3
[3,]  2.0  2.5    4
[4,]  3.0  1.0    5

, , 2

     [,1] [,2] [,3]
[1,]  1.5  4.0    2
[2,]  1.0  5.0    3
[3,]  2.0  2.5    4
[4,]  3.0  1.0    5
于 2013-03-21T14:34:59.353 回答