String zum Variablennamen in R

8

Ich bereinige einen Datensatz und muss die Variablen abhängig von einer anderen Variablen auswählen. Nehmen wir an, wenn ID = 1 ist, muss ich die Variable VAR01 in den Datenrahmen einfügen, wenn ID = 2 , ich VAR02 brauche, und so weiter.

Also mache ich eine for-Schleife, wo ich den Variablennamen 'VAR' mit der ID-Nummer mit der stringf -Funktion einfüge. Das Problem ist, dass ich R brauche, um den String als Funktionsname zu verstehen.

Ich habe im Forum diese Lösung gefunden, die bei mir nicht funktioniert:

%Vor%

Das Problem ist, dass ich es nicht verwenden kann, um auf die Variable zu verweisen:

%Vor%

Hat jemand eine Lösung?

Danke!

    
Fran 07.03.2013, 11:51
quelle

3 Antworten

9

Sie können assign()

verwenden %Vor%

Hinweis: assign als solche wird die Variable in der Umgebung erstellen, in der sie aufgerufen wird. Also, wenn Sie assign innerhalb einer Funktion wie dieser aufrufen würden:

%Vor%

Durch den Aufruf der Funktion wird my_var in der Funktion auf den Wert 5 gesetzt, dessen Umgebung nur für die Zeit erstellt wird, in der die Funktion ausgeführt und danach zerstört wird.

%Vor%

Wenn Sie also den Wert nach einem Funktionsaufruf beibehalten möchten, müssen Sie eine Umgebung angeben, in der die Variable angezeigt wird, wenn die Aufgabe ausgeführt wird. Zum Beispiel in global environment :

%Vor%     
Rcoster 07.03.2013 12:12
quelle
5

Sie können get :

verwenden %Vor%

Obwohl eine starke Verwendung von get und set darauf hinweist, möchten Sie vielleicht stattdessen list der Variablen verwenden:

%Vor%     
Paul Hiemstra 07.03.2013 11:58
quelle
2

Dies ist FAQ 7.21.

Der wichtigste Teil dieser FAQ ist das Ende, bei dem Sie Listen verwenden müssen, anstatt dies in der globalen Umgebung zu tun. Sie erwähnen, dass Sie dies in einem Datenrahmen tun wollen (der bereits eine Liste ist), so dass dies einfacher wird. Versuchen Sie etwas wie:

%Vor%

Wenn Sie in diesem Fall eval(parse(text=...)) verwenden, ist das so, als würden Sie sagen, dass Sie wissen, wie Sie von New York nach Boston kommen und daher nach dem Weg von New York nach New York und von Boston nach Ihrem Ziel fragen. In einigen Fällen ist das vielleicht nicht so schlimm, aber es ist etwas abseits, wenn Sie versuchen, von London nach Paris zu kommen (und Ihr Beispiel führt Sie von New York über den Mars nach Boston). Siehe fortune(106) .

    
Greg Snow 07.03.2013 23:00
quelle

Tags und Links