Рассчитать среднее и квантиль из списка 3d-массивов - PullRequest
0 голосов
/ 15 февраля 2019

Я хотел бы рассчитать среднее значение и квантиль для списка 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)

Но я не знаю, как это сделать для квантиль .

...