2016-05-02 5 views
0

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 210
for (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!

+0

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 –

+0

Nichts Gutes kann von der Änderung des Wertes der Indexvariablen kommen, die Sie für die 'for' Schleife verwenden. (Das ist ein Hinweis.) – joran

+0

... 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

Antwort

0

Der Schlüssel zum Dateifehler ist:

Fehler in Datei (Datei, ifelse (anhänge, "a", "w")): ungültiges 'description' Argument Zusätzlich: Warnmeldung: in if (Datei == "") Datei < - stdout() else if (is.character (Datei)) {: die Bedingung hat Länge> 1 und nur das erste Element wird

verwendet werden

"Datei" ist anscheinend ein Vektor und keine einzelne Zeichenfolge.

Dies ist möglicherweise nicht das einzige Problem.