2016-04-28 11 views
2

配列内のすべての別々の行列に対して、特定の行、つまり2行を合計する方法が不思議です。例えば多次元配列に特定の行を集計して格納する

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

Iは、アレイ内の各行列に対して、行のみ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、第1の行列の行2の和、80 = 12 +14 +16+ 18 +20、2行目の2行目の和など)

非常に高く評価されています。

答えて

1

必要がある、あなたの上記の例で

[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 

を試すことができます。

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

を取得するには:あなたは、特に2行目の合計をしたい場合は、あなたが使用する場合にのみ第二のカラム