Эффективное вычисление сумм строк трехмерного массива в R

Рассмотрим массив a :

> a <- array(c(1:9, 1:9), c(3,3,2))
> a
, , 1

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

, , 2

     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9

Как эффективно вычислить строчные суммы матриц, проиндексированных по третьему измерению, чтобы результат был:

     [,1] [,2]
[1,]   12   12
[2,]   15   15
[3,]   18   18

??

Суммы столбцов легко вычислить с помощью аргумента dims в colSums () :

> colSums(a, dims = 1)

, но я не могу найти способ использовать rowSums ( ) в массиве для достижения желаемого результата, поскольку он имеет другую интерпретацию 'dims' , чем colSums () .

Вычислить просто желаемые суммы строк с помощью:

> apply(a, 3, rowSums)
     [,1] [,2]
[1,]   12   12
[2,]   15   15
[3,]   18   18

, но это просто скрывает цикл. Есть ли другие эффективные, действительно векторизованные, способы вычисления требуемых сумм строк?

12
задан Reinstate Monica - G. Simpson 27 February 2011 в 19:36
поделиться