2016-04-28 13 views
2

Ich frage mich, wie man eine bestimmte Zeile, d. H. Zeile 2, für alle separaten Matrizen in einem Array summiert.Summieren und Speichern bestimmter Zeilen im mehrdimensionalen Array

Zum Beispiel:

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

Ich mag nur 2 die Summe der Reihe zu bekommen, für jede Matrix in dem Array und speichern sie in einer Matrix.

Ich habe versucht, Variationen:

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

Dies ergibt:

matrix1 
    [1] 36 42 48 54 60 

Which, ist nicht das, was ich will.

My gewünschte Ausgabe würde so etwas wie:

matrix1 
[1] 30,80,130 

(wobei 30 = 2 + 4 + 8 + 6 + 10, Summe der Zeile 2 in der ersten Matrix, 80 = 12 +14 +16+ 18 +20, Summe von Zeile 2 in der zweiten Matrix, etc ..)

Sehr geschätzt!

Antwort

1

Sie verwenden möchten:

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

Um:

[1] 30 80 130 

Das Problem mit dem obigen Beispiel war mit Der MARGIN=1 Parameterwert, da Sie das Array bereits über [2,,] untergliedert haben, um eine Zwischenmatrix von Zeilenwerten über Matrizen in Spaltenform zu erhalten.

z.B.

> 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 

Von dort müssen Sie über mehrere Spalten summieren, die MARGIN = 2 erfordert.

0

können Sie diese versuchen

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 

Hier in jeder Matrix, bekam ich die Summe aller Zeilen. Wenn Sie speziell die Summe der zweiten Reihe wollen, dann brauchen Sie nur die zweite Spalte

Verwandte Themen