2016-08-19 1 views
-1

Ich habe ein Verzeichnis mit 10 NCDF4-Dateien. Ich schrieb ein Skript, um die Datei mit mehr als 100 Beobachtungen in der Dateibeobachtungsdimension zu trennen. Ich möchte in eine Textdatei schreiben, die die Kriterien erfüllt. Aber wenn ich das Skript ausführe, wird nur der letzte der fünf, die die Kriterien erfüllen, in die Textdatei geschrieben. Ich sollte 5 Dateien haben. Was mache ich falsch Mein Skript unten:Skript nur Extraktion eins fünf von fünf

x <- filenames <- list.files("D:/Rwork/Test", pattern = "*.nc", full.names = TRUE) 
file.create("stationstouse.data") 
for (i in x) { 
    filetoopen <- (i) 
    a <- nc_open(filetoopen) 
    D <- a$dim$obs$vals 
    z <- length(D) 
    if (z > 100) { 
     fileConn <- file("stationstouse.data") 
     write("\n",file = fileConn, append = TRUE) 
     write(fileConn, file = fileConn, append = TRUE) 
     close(fileConn) 
     print(i) 
    } 
    nc_close(a) 
} 

Antwort

1

Versuchen Sie die Datei in „anhängen“ Modus zu öffnen:

fileConn <- file("stationstouse.data", "a") 
+0

Versucht, dass leider kein Erfolg – ian

+0

Ist Länge die richtige Testfunktion? Vielleicht 'now'? –

+0

Lassen Sie mich versuchen, kein Glück – ian

0

Gemäß der Dokumentation, write ist ein Wrapper um cat, und nach die Dokumentation für cat:

anfügen logisch. Wird nur verwendet, wenn die Argumentdatei der Name der Datei ist (und keine Verbindung oder "| cmd"). Wenn TRUE-Ausgabe an die Datei angehängt wird; Andernfalls wird der Inhalt der Datei überschrieben. Deshalb

ersetzen:

write("\n",file = fileConn, append = TRUE) 
write(fileConn, file = fileConn, append = TRUE) 

mit

write("\n",file = "stationstouse.data", append = TRUE) 
write(i, file = "stationstouse.data", append = TRUE) 

und Sie sollten mindestens mehr als eine Zeile der Ausgabe erhalten.

Hoffe, das hilft.

+0

Lassen Sie mich versuchen, geben Sie mir eine min – ian

+0

Guter Versuch, aber anstatt die letzte Datei zu bekommen, bekam ich eine Zeile von 3 in der TXT-Datei ?? – ian

+0

@ian: Ich wollte dich fragen, warum du die 'fileConn' nach 'stationstouse.data' schreibst. Das ist die '3', die du siehst? Sehen Sie, ob meine Bearbeitung eine Verbesserung ist. – aichao

Verwandte Themen