Schreibe Textzeilen in eine Datei in R

Wie schreibe ich in der R-Skriptsprache Textzeilen, zB die folgenden zwei Zeilen

Hello World 

in eine Datei namens “output.txt”?

 fileConn< -file("output.txt") writeLines(c("Hello","World"), fileConn) close(fileConn) 

Eigentlich kannst du es mit sink() tun:

 sink("outfile.txt") cat("hello") cat("\n") cat("world") sink() 

daher tun:

 file.show("outfile.txt") # hello # world 

Ich würde den Befehl cat() wie in diesem Beispiel verwenden:

 > cat("Hello",file="outfile.txt",sep="\n") > cat("World",file="outfile.txt",append=TRUE) 

Sie können dann die Ergebnisse von mit R mit anzeigen

 > file.show("outfile.txt") hello world 

Was ist mit einem einfachen writeLines() ?

 txt < - "Hallo\nWorld" writeLines(txt, "outfile.txt") 

oder

 txt < - c("Hallo", "World") writeLines(txt, "outfile.txt") 

1. Verwendung des Dateiarguments in cat .

  cat("Hello World", file="filename") 

2. Verwenden Sie die sink function, um alle Ausgaben von Print und Cat in File umzuleiten .

  sink("filename") # Begin writing output to file print("Hello World") sink() # Resume writing output to console 

HINWEIS : Die Druckfunktion kann ihre Ausgabe nicht redirect, aber die Sink-function kann alle Ausgaben in eine Datei zwingen.

3. Verbindung zu einer Datei herstellen und schreiben .

 con < - file("filename", "w") cat("Hello World", file=con) close(con) 

Sie könnten das in einer einzigen statement tun

 cat("hello","world",file="output.txt",sep="\n",append=TRUE) 

Um die Möglichkeiten writeLines() , können Sie writeLines() mit sink() , wenn Sie möchten:

 > sink("tempsink", type="output") > writeLines("Hello\nWorld") > sink() > file.show("tempsink", delete.file=TRUE) Hello World 

Für mich ist es immer am intuitivsten, print() , aber wenn Sie das tun, wird die Ausgabe nicht das sein, was Sie wollen:

 ... > print("Hello\nWorld") ... [1] "Hello\nWorld" 

Basierend auf der besten Antwort :

 file < - file("test.txt") writeLines(yourObject, file) close(file) 

Beachten Sie, dass das yourObject in einem Zeichenfolgenformat vorliegen muss. Verwenden Sie as.character() zu konvertieren, wenn Sie brauchen.

Aber das ist zu viel Tipparbeit für jeden Speicherversuch. Lass uns in RStudio ein Snippet erstellen.

Geben Sie unter Globale Optionen >> Code >> Snippet Folgendes ein:

 snippet wfile file < - file(${1:filename}) writeLines(${2:yourObject}, file) close(file) 

wfile während der Codierung wfile und drücken Sie die Tabulatortaste .

Ich schlage vor:

 writeLines(c("Hello","World"), "output.txt") 

Es ist kürzer und direkter als die derzeit akzeptierte Antwort. Es ist nicht notwendig zu tun:

 fileConn< -file("output.txt") # writeLines command using fileConn connection close(fileConn) 

Weil die Dokumentation für writeLines() sagt:

Wenn con eine Zeichenkette ist, ruft die function die file auf, um eine file zu erhalten, die für die Dauer des functionsaufrufs geöffnet ist.

 # default settings for writeLines(): sep = "\n", useBytes = FALSE # so: sep = "" would join all together eg 

Die hässliche Systemoption

 ptf < - function (txtToPrint,outFile){system(paste(paste(paste("echo '",cat(txtToPrint),sep = "",collapse = NULL),"'>",sep = "",collapse = NULL),outFile))} #Prints txtToPrint to outFile in cwd. #!/bin/bash echo txtToPrint > outFile