Как выполнять вычисления для всех матриц в массиве одновременно

#r #arrays

Вопрос:

У меня большой массив, и мне нужно найти значения строк() для всех матриц в массиве одновременно, но по отдельности. Всякий раз, когда я это делаю:

rowSums(array1[ , ,1:1000])

Я получаю общую сумму всех значений в каждой строке по всему массиву. Что мне нужно, так это:

rowSums(array1[ , ,1])

Но это дает мне только rowSums() для 1 матрицы, и мне это нужно для всех из них. По сути, мне нужно преобразовать массив в новый массив, где матрицы представляют собой суммы строк предыдущих матриц.

Я мог бы сделать это вручную, но это заняло бы у меня несколько часов из-за размера массива, и я знаю, что есть простое решение, которое я неграмотен, чтобы увидеть.

Огромное спасибо.

Ответ №1:

Мы можем использовать apply с MARGIN = 3

 apply(array1, 3, rowSums)
      [,1] [,2] [,3]
[1,]    9   27   45
[2,]   12   30   48
 

что то же самое, что делать индивидуально

 > rowSums(array1[, , 1])
[1]  9 12
> rowSums(array1[, , 2])
[1] 27 30
> rowSums(array1[, , 3])
[1] 45 48
 

данные

 array1 <- array(1:18, c(2, 3, 3))