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.
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:
Sie können diese Funktion wie folgt aufrufen:
%Vor%Eine Erläuterung des obigen Codes. Sie müssen Ihr Problem in Schritte aufteilen:
x <- id
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
. 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. 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.
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.