2016-09-12 4 views
0

Ich habe eine Reihe von Variablen wie A1 A2 A3 A4 und B1 B2 B3 B4 und C1 C2 C3 C4. Ich versuche cbind diese zusammen in einen Datenrahmen, aber die Anzahl der Variablen für A, B und C variiert jeden Lauf. Also hier ist das Maximum für jede 4, aber andere Male kann es zum Beispiel 10 sein.Referenzieren von inkrementellen Variablen in r

df <- cbind(A1,A2,A3,A4,B1,B2,B3,B4,C1,C2,C3,C4) 

df <- cbind(A1-Amax,B1-Bmax,C1-Cmax) 

wo max ist eine Variable, die die maximale Anzahl (d.h 4 in diesem Beispiel) enthält.

+1

Ich würde gerne wissen, wie diese A, B, C-Objekte erstellt wurden. – zx8754

+0

in einer Schleife mit geht von i = 1 bis max – user3651829

+1

Dann sollten wir vielleicht in der Verbesserung der Schleife Code statt suchen. [XY-Problem] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) Das Arbeiten mit "apply family" und "using lists" könnte mehr Sinn ergeben. – zx8754

Antwort

1

Wir können mit mget versuchen, eine list Ausgabe zu erhalten

res <- do.call(cbind, mget(ls(pattern = "(A|B|C)\\d+"))) 

Angenommen, wenn wir es brauchen trennen die "Aamax" zu berechnen, "Bbmax" usw.

lstA <- mget(ls(pattern = "A\\d+")) 
lstB <- mget(ls(pattern = "B\\d+")) 
lstC <- mget(ls(pattern = "C\\d+")) 

Es ist nicht klar, was die "Aamax", "Bbmax" usw.

+0

"Aamax" - ich denke, sie bedeuten 'A 'mit'Amax'-Wert, in diesem Fall ist es" A4 ". – zx8754

+1

Ich habe die Frage bearbeitet, um sie klarer zu machen. Ich komme von einem SAS-Hintergrund und Max wäre eine Makrovariable für mich $ max. – user3651829

+0

@ user3651829 Was ist mit A2 und A3 mit entsprechenden Aamax, .. – akrun

Verwandte Themen