对不起,但我找不到用三维数组中的每个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
答案 0 :(得分: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