Ich bin ein R-Neuling versucht, sein erstes Skript zu schreiben. Ich habe ein Problem innerhalb einer for-Schleife festgestellt. In meinem Code erstelle ich 2 Spalten Datenrahmen aus 2 Vektoren mit einem teilweise gemeinsamen Namen. Ich verwende eine for-Schleife, um dies für mehrere dieser gebräuchlichen Namen (definiert durch Vektor a) durchzuführen.For-Schleife Fehler mit write.csv Funktion
paste("A",1:4,sep="")->a
for (i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> k
print(k)
}
Dies funktioniert, aber ich ein Problem auftreten, wenn ich diesen Datenrahmen als separate CSV-Dateien mit diesem Code drucken mag:
for (i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> k
print(k)
write.table (k, file = paste("Results_",i, sep=''))
}
Der Fehler liest angezeigt, wie
Error in file(file, ifelse(append, "a", "w")) :
invalid 'description' argument
In addition: Warning message:
In if (file == "") file <- stdout() else if (is.character(file)) { :
the condition has length > 1 and only the first element will be used
folgt
Zusätzlich hat das flwing funktioniert, aber natürlich nur eine csv-Datei der letzten Iteration
erstellen 210for (i in a) {
j<-grep(x= ls(pos=1), pattern=i, value=TRUE)
data.frame(do.call(cbind,mget(j)))-> ff
print(ff)
write.table (ff, file = "results_df.csv")}
Danke!
auch: In einigen anderen Fragen zu diesem Fehler wurde erwähnt, dass ich die Erlaubnis zum Schreiben brauche. Ich tue, da write.csv zuvor im selben Verzeichnis gearbeitet hat –
Nichts Gutes kann von der Änderung des Wertes der Indexvariablen kommen, die Sie für die 'for' Schleife verwenden. (Das ist ein Hinweis.) – joran
... auch, wenn Sie wirklich nur beginnen, beachten Sie, dass (1) 'data.frame (cbind())' ist in der Regel eine ziemlich schlechte Idee; 'cbind' wird alle Objekte zu einem Typ zwingen, so dass es ein sehr irreführender und fehleranfälliger Weg sein kann, einen data.frame zu erstellen, und (2) Frühzeitige schlechte Gewohnheiten zu vermeiden, wie die schlechte Angewohnheit, einzelne, isolierte, aber ähnlich benannte Objekte in Ihrem Arbeitsbereich. Wenn sie verwandt sind und in Gruppen berechnet werden müssen, fügen Sie sie in eine benannte Liste ein. Wenn Sie gerade erst anfangen und auf "get" oder "mget" zurückgreifen, haben Sie wahrscheinlich nicht den besten Weg gewählt. – joran