2016-04-28 28 views
2

我想知道如何爲數組中的所有單獨矩陣求和一個特定的行,即第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,第二矩陣第二行之和等)。

非常感謝!

回答

1

你想使用:

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

要獲取:

[1] 30 80 130 

與上面例子中的問題與MARGIN=1參數值,因爲您已經通過[2,,]對數組進行了子集化,以便將矩陣中行值的中間矩陣置於列形式中。

例如

> 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

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 

在這裏,每一個矩陣,我得到了所有行的總和。如果你特別希望第二行的總和,那麼你只需要第二列