在多维数组中求和和存储特定行

时间:2016-04-28 05:38:45

标签: arrays r

我想知道如何对数组中所有单独矩阵的特定行(即第2行)求和。

例如:

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

我想得到第2行的总和,对于数组中的每个矩阵并将其存储在矩阵中。

我尝试过各种变体:

matrix1 <- matrix("", 5,1)
apply(array1[2,,], 1, sum)
matrix1 <- apply(array1[2,,],1,sum]

这会产生:

matrix1
    [1] 36 42 48 54 60

哪,不是我想要的。

我想要的输出类似于:

matrix1 
[1] 30,80,130 

(其中30 = 2 + 4 + 6 + 8 + 10,第一个矩阵中第2行的总和,80 = 12 + 14 + 16 + 18 + 20,第二个矩阵中第2行的总和等等。 )

非常感谢!

2 个答案:

答案 0 :(得分:1)

您想使用:

apply(array1[2,,], MARGIN = 2, FUN = sum)

获得:

[1]  30  80 130

上述示例的问题在于MARGIN=1参数值,因为您已经通过[2,,]对数组进行了子集化,以获得跨列格式的矩阵的行值的中间矩阵。

e.g。

> array1[2,,]

     [,1] [,2] [,3]
[1,]    2   12   22
[2,]    4   14   24
[3,]    6   16   26
[4,]    8   18   28
[5,]   10   20   30

从那里,您需要对列进行求和,这需要MARGIN = 2

答案 1 :(得分:0)

你可以试试这个

array1 <- array(1:30, c(2,5,3))
apply(array1,c(3,1),sum)


     [,1] [,2]
[1,]   25   30
[2,]   75   80
[3,]  125  130

在每个矩阵中,我得到了所有行的总和。如果您特别想要第二行的总和,那么您只需要第二列