2017-07-17 5 views
3

alle zusammen! Ich habe ein sehr gerades Problem. Ich habe eine dreidimensionale Anordnung w, wie folgt aufgerufen:Fügen Sie n-Dimensionen in einem dreidimensionalen Array in R

> w 
, , 1 

    [,1] [,2] [,3] 
[1,] 0.5 0.5 0.5 
[2,] 0.5 0.5 0.5 

, , 2 

    [,1] [,2] [,3] 
[1,] 0.1 0.1 1.0 
[2,] 0.5 0.5 0.5 

Nun ist es nur eine Darstellung, so ist dies nicht die eigentlichen Daten.

Die Sache ist, dass ich die Elemente aus den dritten Dimensionen, wie w[1, 1, 1] + w[1, 1, 2] + w[1, 1, 3] zusammenfüge, aber ich weiß nicht, wie viele Mitglieder die dritte Dimension haben wird. Ich kann es nicht in einer for-Schleife tun, weil es bereits in einer verschachtelten for-Schleife ist (zwei for-Schleifen).

Also, ich habe im Grunde fügen zusammen w[, , 1] + w[, , 2] + w[, , 3]....

Ich habe versucht, so etwas wie

for (k in 1:dims(w)[3]) # it is one of the for loops 
lapply(w[, , k], '+') 

aber er druckt nur die w[, , 1] und das ist es.

In C++, ich denke, Sie würden einfach schreiben y + = w [,, n].

Ich würde wirklich einige Gedanken darüber schätzen, wie ich diese oder vielleicht eine Lösung angehen sollte :).

* bearbeiten: ein sehr peinlicher Tippfehler.

+3

Versuchen Sie mit 'rowSums' und' colSums'. Also nutze die Daten unten. 'rowSums (mein.array, dimmt = 2)' – user20650

Antwort

2

Sieht aus wie das tut, was Sie wollen:

# sample data 
w<-array(sample(1:4),dim=c(3,3,3)) 

# sum over dimensions 1 and 2 
apply(w, MARGIN=c(1, 2), sum) 

hoffe, das hilft!

+0

Danke! Es macht es perfekt. Es beweist auch, dass es viel zu lesen gibt, was ich noch tun muss :) –

Verwandte Themen