In the R scripting language, how do I write lines of text, e.g. the following two lines
Hello
World
to a file named "output.txt"?
转载于:https://stackoverflow.com/questions/2470248/write-lines-of-text-to-a-file-in-r
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
Actually you can do it with sink()
:
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
hence do:
file.show("outfile.txt")
# hello
# world
I would use the cat()
command as in this example:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
You can then view the results from with R with
> file.show("outfile.txt")
hello
world
What's about a simple writeLines()
?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
or
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
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
To round out the possibilities, you can use writeLines()
with sink()
, if you want:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
To me, it always seems most intuitive to use print()
, but if you do that the output won't be what you want:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
You could do that in a single statement
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
1.Using file argument in cat
.
cat("Hello World", file="filename")
2.Use sink
function to redirect all output from both print and cat to file.
sink("filename") # Begin writing output to file
print("Hello World")
sink() # Resume writing output to console
NOTE: The print function cannot redirect its output, but the sink function can force all output to a file.
3.Making connection to a file and writing.
con <- file("filename", "w")
cat("Hello World", file=con)
close(con)
Based on the best answer:
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
Note that the yourObject
needs to be in a string format; use as.character()
to convert if you need.
But this is too much typing for every save attempt. Let's create a snippet in RStudio.
In Global Options >> Code >> Snippet, type this:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
Then, during coding, type wfile
and press Tab.
I suggest:
writeLines(c("Hello","World"), "output.txt")
It is shorter and more direct than the current accepted answer. It is not necessary to do:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
Because the documentation for writeLines()
says:
If the
con
is a character string, the function callsfile
to obtain a file connection which is opened for the duration of the function call.
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.