2016-08-28 6 views
0

Ich versuche, Dateien aus einem Ordner zu lesen, sie zu zählen und dann für die Schleife mit der Länge durch jede Datei gehen, verwenden Sie cat Funktion und für die erste Datei, setzen Ausgabe in output.txt sein wie:Wert aus einer TXT-Datei lesen und in Ausgabedatei schreiben

  • file1: Katze Ausgang
  • file2: Katze Ausgang

Mein Code sieht so aus:

entry = list.files(path = "//Users//michael/Desktop//test_folder", full.names = TRUE, recursive = TRUE) 
output = list.files(path = "//Users//michael/Desktop//list.txt", full.names = TRUE, recursive = TRUE) 
len = length(entry) 
for(i in 1){ 
cat(entry,file="//Users//michael/Desktop//list.txt", sep="\t", append=TRUE) 
cat("\n",file="//Users//michael/Desktop//list.txt", append=TRUE) 
} 

Ich habe auch mit for(i in 1:len) versucht, aber das würde nur diese x3 länger machen, weil es es für jede Iteration von 'i' tut.

Mein test_folder wie folgt aussieht:

  • Datei 1.txt mit den Werten (John, Michael, Fabian) jeder in einer neuen Zeile (\ n)
  • Datei 2.txt ähnliche Werte hat

fassen wir zusammen:
ich versuche, meine test_folder zu laden, die Anzahl der Dateien zählen (in meinem Fall 2), für eine Schleife durch jede Datei gehen und cat ihnen, ich kann so sehen, was drin ist und dann in Druckwerte Meine Liste.txt (Ausgabe in einem Format) wie:

  • file1: Katze Ausgang
  • file2: Katze Ausgang

Wo ist mein Fehler, und wie würde Ausgabe/geändert Code aussehen, um diese Arbeit zu machen?

+0

Versuchen Sie zu verstehen, was Ihr Ziel ist: Was ist das Endprodukt, das Sie produzieren möchten? –

+0

@MichaelDavidson Es ist Lernkurve.Ich möchte nur durch Dateien im Ordner gehen (es wird nur. TXT-Dateien)> cat sie und drucken Sie ihren Wert in output.txt-Datei. Nur eine Lernkurve. Später werde ich etwas Code mit Funktionen austauschen, die etwas anderes machen usw. Hast du irgendeine Eingabe, wie kann ich das tun? Vielen Dank! – Michael

Antwort

1

Okay, wenn ich Sie richtig verstehe, möchten Sie mehrere. Txt-Dateien aus einem einzigen Verzeichnis öffnen und dann ihren Inhalt verketten. Ich empfehle die Verwendung list.files (wie Sie bereits sind) und dann lapply und readLines, um diese Dateien zu öffnen.

Ermitteln Sie die Speicherorte der TXT-Dateien. Dies erzeugt eine Liste mit jedem Element der Liste ein Verzeichnis (Dateipfad) zu sein:

dirs <- list.file(path="path/to/input/directory", full.path=TRUE) 

Verwenden lapply die Elemente der Liste iterieren (wie Ihre for Schleife), und öffnen Sie sie mit der Funktion readLines. Dies erzeugt eine Liste mit der gleichen Anzahl von Elementen wie dirs, aber dieses Mal ist es enthält den Inhalt der Textdateien:

myfiles <- lapply(dirs, readLines) 

Schließlich kombiniert diese Elemente der Liste (die jeweils den Inhalt einer Textdatei enthält) in ein Objekt, das Sie als einzelne Textdatei speichern können.

dat <- do.call("rbind", myfiles) # note rbind might need to be replaced with "c" depending on the contents of the .txt files 

Entschuldigung, wenn ich etwas vermisse oder missverstanden. Bitte kommentieren und ich werde mich entsprechend anpassen.

+0

Das hat wirklich funktioniert! Ich habe eine zweite Frage an dich. Jetzt versuche ich das Bild aus einem Ordner zu laden und benutze die ** mxnet ** Bibliothek, um die Ergebnisse des Bildes zu erhalten. Zum Beispiel, wenn ich ein Bild aus einem Ordner lade und es einen Hasen drauf hat, sollte eine Ausgabe wie "es ist 90% Hase" sein. Ich habe eine Version, die für 1 Bild funktioniert, aber jetzt versuche ich, es für mehr als einen zu ändern. Deshalb all dies. Hast du einen Hinweis? :) Danke auch für die Lösung – Michael

+1

Froh das klappte. Ich würde einige dieser Tutorials ausprobieren: http://mxnet.io/packages/r/index.html Ich habe dieses Paket nicht benutzt. Nachdem du es versucht hast, kannst du eine neue Frage stellen. –

Verwandte Themen