Gibt einen Datenrahmen aus der Funktion zurück

8

Ich habe den folgenden Code innerhalb einer Funktion

%Vor%

Dies funktioniert, wenn ich versuche, es in R auszuführen, indem ich den Code innerhalb der Funktion auswähle und die Rückgabe auskommentiere. Ich bekomme einen schönen Datenrahmen wie aus der print-Anweisung:

%Vor%

Wenn ich jedoch versuche, den Datarahmen df2 von der Funktion zurückzugeben, gibt er nur die erste Zeile zurück und ignoriert alle anderen Werte. Mein Problem ist, dass es innerhalb der Funktion für verschiedene Werte funktioniert, die ich versucht habe (mehrere Dateien mit verschiedenen Kombinationen öffnend) und nicht, wenn ich versuche, den Datenrahmen zurückzugeben. Kann mir bitte jemand helfen. Vielen Dank im Voraus.

    
user3127034 13.06.2014, 19:37
quelle

2 Antworten

5

Wenn ich Sie richtig verstehe, versuchen Sie, einen Datenrahmen mit der Anzahl der vollständigen Fälle für jedes id zu erstellen. Angenommen, Ihre Dateien sind Namen mit den angegebenen ID-Nummern (z. B. f2.csv ), können Sie Ihre Funktion wie folgt vereinfachen:

%Vor%

Sie können diese Funktion wie folgt aufrufen:

%Vor%

Eine Erläuterung des obigen Codes. Sie müssen Ihr Problem in Schritte aufteilen:

  1. Du brauchst einen Vektor der IDs, das macht x <- id
  2. Für jedes id möchten Sie die Anzahl der vollständigen Fälle. Um das zu bekommen, müssen Sie zuerst die Datei lesen. Das macht read.csv(as.character(paste0(directory,"/","f",id[i],".csv"))) . Um die Anzahl der vollständigen Fälle für diese Datei zu erhalten, müssen Sie den Code read.csv in sum und complete.cases .
  3. einschließen
  4. Nun möchten Sie diese Nummer zu einem Vektor hinzufügen. Daher benötigen Sie einen leeren Vektor ( y <- vector() ), dem Sie die Anzahl der vollständigen Fälle aus Schritt 2 hinzufügen können. Dies geschieht, indem Sie den Code aus Schritt 2 in y <- c(y, "code step 2") einfügen. Damit fügen Sie die Anzahl der vollständigen Fälle für jedes id zum Vektor y hinzu.
  5. Der letzte Schritt besteht darin, diese beiden Vektoren zu einem Datenrahmen mit df <- data.frame(x, y) zu kombinieren und eine sinnvolle colnames zuzuordnen.

Indem Sie die Schritte 1, 2 und 3 (mit Ausnahme von y <- vector() ) in eine for-Schleife einfügen, können Sie die Liste der angegebenen IDs durchlaufen. Das Erstellen des leeren Vektors mit y <- vector() muss vor der for-Schleife erfolgen, damit die for-Schleife Werte zu y hinzufügen kann.

    
Jaap 13.06.2014, 20:46
quelle
0

Das ist eigentlich ziemlich einfach, wenn man den Umfang ändert.

Das Problem besteht darin, dass Sie den ursprünglichen Datenrahmen zunächst als lokale Variable erstellen und dann nur die Zeilen austauschen, sodass Sie nur die ersten und letzten Ergebnisse im Datenrahmen erhalten.

>

Wenn ich eine for-Schleife mit R erzeuge und die Ergebnisse von aufeinanderfolgenden Abfragen usw. zu einem anfänglichen Datenrahmen hinzufügen möchte, mache ich das:

%Vor%

Das Scoping ermöglicht es jeder Iteration, einen Datenrahmen zu erstellen, den Sie an das Original anhängen können, ohne eine der Iterationen zwischen dem ersten und dem letzten zu verlieren.

    
uevencodebro 29.11.2017 08:46
quelle

Tags und Links