Wie schreibe ich in der Skriptsprache R Textzeilen, z. B. die folgenden zwei Zeilen
Hello
World
in eine Datei namens "output.txt"?
Wie schreibe ich in der Skriptsprache R Textzeilen, z. B. die folgenden zwei Zeilen
Hello
World
in eine Datei namens "output.txt"?
Kurze Wege zu Schreiben von Textzeilen in eine Datei in R könnte realisiert werden mit Katze o writeLines wie bereits in vielen Antworten gezeigt wurde. Einige der kürzesten Möglichkeiten könnten sein:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
Falls Sie die " " nicht mögen \n " können Sie auch den folgenden Stil verwenden:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
Während writeLines
fügt eine Zeilenumbruch am Ende der Datei, was nicht der Fall ist bei cat
. Dieses Verhalten könnte durch angepasst werden:
writeLines("Hello\nWorld", "output.txt", sep="") #No newline at end of file
cat("Hello\nWorld\n", file="output.txt") #Newline at end of file
cat("Hello\nWorld", file="output.txt", sep="\n") #Newline at end of file
Der Hauptunterschied besteht jedoch darin, dass cat
verwendet R-Objekte et writeLines
a Zeichenvektor als Argument. So schreibt man z.B. die Zahlen 1:10 muss für writeLines umgewandelt werden, während es in cat unverändert verwendet werden kann:
cat(1:10)
writeLines(as.character(1:10))
und cat
nehmen können viele Objekte, sondern writeLines
nur un Vektor:
cat("Hello", "World", sep="\n")
writeLines(c("Hello", "World"))
Das Anhängen an eine bestehende Datei ist einfacher mit cat
.
cat("Hello\n", file="output.txt")
cat("World", file="output.txt", append=TRUE)
writeLines("Hello", "output.txt")
CON <- file("output.txt", "a")
writeLines("World", CON)
close(CON)
Andererseits writeLines
ist schneller als cat
.
bench::mark(check=FALSE,
writeLines(c("Hello", "World")),
cat("Hello", "World", sep="\n"),
writeLines(c("Hello", "World"), sep=" "),
cat(c("Hello", "World")),
cat("Hello", "World") )
# expression min median `itr/sec` mem_a…¹
# <bch:expr> <bch:tm> <bch:tm> <dbl> <bch:b>
#1 writeLines(c("Hello", "World")) 2.27µs 4.77µs 163878. 0B
#2 cat("Hello", "World", sep = "\n") 3.83µs 8.51µs 118708. 0B
#3 writeLines(c("Hello", "World"), sep = " ") 1.99µs 4.25µs 235944. 0B
#4 cat(c("Hello", "World")) 4.1µs 6.84µs 141797. 0B
#5 cat("Hello", "World") 3.46µs 7.06µs 129865. 0B
Wie wäre es mit einem einfachen write.table()
?
text = c("Hello", "World")
write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)
Die Parameter col.names = FALSE
et row.names = FALSE
stellen Sie sicher, dass Sie die Zeilen- und Spaltennamen in der txt ausschließen und den Parameter quote = FALSE
schließt die Anführungszeichen am Anfang und am Ende jeder Zeile im txt aus. Um die Daten wieder einzulesen, können Sie Folgendes verwenden text = readLines("output.txt")
.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.