Используйте na.omit
с apply
и транспонируйте с aperm
.
Пример
Рассмотрите массив A
.
A
# , , 1
#
# [,1] [,2] [,3]
# [1,] 1 3 NA
# [2,] NA 4 6
#
# , , 2
#
# [,1] [,2] [,3]
# [1,] 1 3 NA
# [2,] NA 4 6
#
# , , 3
#
# [,1] [,2] [,3]
# [1,] 1 NA 5
# [2,] NA 4 6
#
# , , 4
#
# [,1] [,2] [,3]
# [1,] 1 NA 5
# [2,] 2 NA 6
Метод
aperm(apply(A, c(1, 3), na.omit), c(2, 1, 3))
# , , 1
#
# [,1] [,2]
# [1,] 1 3
# [2,] 4 6
#
# , , 2
#
# [,1] [,2]
# [1,] 1 3
# [2,] 4 6
#
# , , 3
#
# [,1] [,2]
# [1,] 1 5
# [2,] 4 6
#
# , , 4
#
# [,1] [,2]
# [1,] 1 5
# [2,] 2 6
Данные
A <- structure(c(1L, NA, 3L, 4L, NA, 6L, 1L, NA, 3L, 4L, NA, 6L, 1L,
NA, NA, 4L, 5L, 6L, 1L, 2L, NA, NA, 5L, 6L), .Dim = 2:4)