Я хотел бы рассчитать среднее значение и квантиль для списка 3d-массивов, пропуская значения NA.
Я пробовал это решение, Среднее значение списка 3D-массивов в R но я не знаю, как рассчитать квантили или применить действия.
x <- array(1:24, dim = 2:4)
y <- array(24:49, dim = 2:4)
z <- array(50:74, dim = 2:4)
x[1,1,1] <- NA
myL <- list(x,y,z)
Reduce('+', myL) / length (myL)
Факт:
, , 1
[,1] [,2] [,3]
[1,] NA 27 29
[2,] 26 28 30
, , 2
[,1] [,2] [,3]
[1,] 31 33 35
[2,] 32 34 36
, , 3
[,1] [,2] [,3]
[1,] 37 39 41
[2,] 38 40 42
, , 4
[,1] [,2] [,3]
[1,] 43 45 47
[2,] 44 46 48
Желаемый:
, , 1
[,1] [,2] [,3]
[1,] 24 27 29
[2,] 26 28 30
, , 2
[,1] [,2] [,3]
[1,] 31 33 35
[2,] 32 34 36
, , 3
[,1] [,2] [,3]
[1,] 37 39 41
[2,] 38 40 42
, , 4
[,1] [,2] [,3]
[1,] 43 45 47
[2,] 44 46 48
И,квантильный метод.Спасибо.
ОБНОВЛЕНИЕ:
Я пробовал это:
a <- array(unlist(myL), dim = c(dim(myL[[1]]), length(myL)))
a.mean <- apply(a, 1:3, mean, na.rm=T)
a.quantile <- apply(a, 1:3, quantile, 0.95 na.rm=T)
Но это очень медленно для моего массива ([162, 200, 2190, 3]).
ОБНОВЛЕНИЕ 2:
Хорошо, это работает для вычисления среднего значения:
rowMeans(do.call(cbind, myL), na.rm = TRUE)
Но я не знаю, как это сделать для квантиль .