我想知道如何对数组中所有单独矩阵的特定行(即第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行的总和等等。 )
非常感谢!
答案 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
在每个矩阵中,我得到了所有行的总和。如果您特别想要第二行的总和,那么您只需要第二列