Mit R über Datenrahmen schleifen und Objekten, die in der Schleife erstellt wurden, entsprechende Namen zuweisen

8

Dies ist etwas, was Datenanalytiker die ganze Zeit tun (besonders wenn sie mit Umfragedaten arbeiten, die fehlende Antworten aufweisen.) Es ist üblich, zuerst eine Menge konkurrierender Datenmatrizen zu multiplizieren, Modelle an jede dieser Matrizen anzupassen und dann zu kombinieren die Ergebnisse. Im Moment mache ich Dinge von Hand und suche eine elegantere Lösung.

Stellen Sie sich vor, es gibt 5 *.csv Dateien im Arbeitsverzeichnis namens dat1.csv , dat2.csv , ... dat5.csv . Ich möchte das gleiche lineare Modell mit jedem Datensatz schätzen.

Wenn diese Antwort gegeben wird, besteht ein erster Schritt darin, eine Liste der Dateien zu sammeln , was ich mit folgendem mache:

%Vor%

Jetzt möchte ich etwas wie

machen %Vor%

Die "which" -Anweisung ist meine alberne Art, zu versuchen, jedes Modell der Reihe nach zu nummerieren, indem ich den Ort in der csvdat-Liste verwende, den die Schleife gerade belegt. das heißt, ich möchte, dass diese Schleife einen Satz von 5 lm-Objekten mit den Namen lm.1 , lm.2 usw. zurückgibt.

Gibt es eine einfache Möglichkeit, diese Objekte zu erstellen und sie so zu benennen, dass ich leicht angeben kann, welchem ​​Datensatz sie entsprechen?

Danke für Ihre Hilfe!

    
tomw 26.05.2011, 21:10
quelle

3 Antworten

10

Ein anderer Ansatz besteht darin, das Paket plyr für das Schleifen zu verwenden. Verwenden Sie das Beispiel von @chl, wie Sie es tun würden

%Vor%     
Ramnath 26.05.2011, 21:36
quelle
10

Verwenden Sie eine Liste, um auch die Ergebnisse Ihrer Regressionsmodelle zu speichern, z. B.

%Vor%     
chl 26.05.2011 21:28
quelle
8

Was Sie wollen, ist eine Kombination der Funktionen seq_along() und assign()

seq_along hilft bei der Erstellung eines Vektors von 1 bis 5, wenn fünf Objekte in csvdat vorhanden sind (um die entsprechenden Zahlen und nicht nur die Variablennamen zu erhalten). Dann assign (mit paste , um die passenden astrings aus den Zahlen zu erstellen) können Sie die Variable erstellen.

Beachten Sie, dass Sie auch zuerst die Datendatei laden müssen (in Ihrem Beispiel fehlte):

%Vor%

seq_along ist nicht unbedingt notwendig, es könnte andere Wege geben, das Nummerierungsproblem zu lösen.

Die kritische Funktion ist assign . Mit assign können Sie Variablen mit einem Namen basierend auf einer Zeichenfolge erstellen. Siehe ?assign für weitere Informationen.

Nach den Kommentaren von chl (siehe seinen Beitrag) alles in einer Zeile:

%Vor%     
Henrik 26.05.2011 21:20
quelle

Tags und Links