2016-08-02 6 views
-1

Ich habe eine i x j Matrix von 1/0. Jede Zeile repräsentiert eine individuelle und Spalten sind Besuche (Elemente Y/N).Matrix und Vektor zu 3-d-Array R

A<-matrix(rbinom(21,1,.5), nc=3, nr=7)

Es ist ein Vektor einer individuellen Gruppe angibt

b<-c(1,2,2,1,1,2,3)

I i x j x max(b) eine 3-D-Matrix mit den Abmessungen machen wollen.

M<-array(NA, c(nrow(A),ncol(A),max(b)))

in M von der oberen Reihe füllt dann nach unten mit der zugehörigen 1/0 Zeile für die individuelle und Erhebung. Belassen Sie zusätzliche Zeilen am Ende als NA.

Danke. Ich hoffe, das macht Sinn.

Antwort

0

Nicht sicher, ob ich die Frage verstehe, willst du so etwas?

A<-matrix(rbinom(21,1,.5), nc=3, nr=7) 
b<-c(1,2,2,1,1,2,3) 
M<-array(NA, c(nrow(A),ncol(A),max(b))) 
for (i in unique(b)) { 
    M[seq_along(which(b == i)), , i] = A[which(b == i), ] 
} 
+0

Fast. Ich möchte, dass M von der oberen Reihe nach unten gefüllt wird, also sind alle NA-Reihen am Ende. Zum Beispiel, 1 sollte die ersten drei Zeilen gefüllt haben und die letzten vier Zeilen als NA – Nathan

+0

@Nathan - können Sie einfach 'M' erstellen - auch wenn Sie' array' manuell verwenden - und dann das zu Ihrer Frage hinzufügen? Es wird die Dinge für zukünftige Leser klarer machen. – thelatemail

+0

sehen Sie die Bearbeitung, mit 'seq_along' um das Argument ändert es in einem Vektor von' 1: Länge (die (b == i)) '. – Vandenman