在R脚本语言中,如何编写行文本,例如,下面两行
Hello
World
到一个名为output.txt的文件?
在R脚本语言中,如何编写行文本,例如,下面两行
Hello
World
到一个名为output.txt的文件?
当前回答
用R语言将文本行写入文件的简单方法可以通过cat或writeLines实现,正如在许多答案中已经展示的那样。一些最短的可能性可能是:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
如果你不喜欢“\n”,你也可以使用下面的样式:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
当writeLines在文件末尾添加换行符时,cat则不是这样。 这种行为可以通过以下方法进行调整:
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
但主要的区别是cat使用R对象和writeLines一个字符向量作为参数。所以写出例如数字1:10需要被强制转换为writeLines,而它可以像在cat中那样使用:
cat(1:10)
writeLines(as.character(1:10))
and cat可以接受很多对象,但writeLines只能接受一个vector:
cat("Hello", "World", sep="\n")
writeLines(c("Hello", "World"))
其他回答
丑陋的系统选项
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
我建议:
writeLines(c("Hello","World"), "output.txt")
它比目前公认的答案更简短、更直接。 没有必要做:
fileConn<-file("output.txt")
# writeLines command using fileConn connection
close(fileConn)
因为writeLines()的文档说:
如果con是字符串,则函数调用file获取 在函数运行期间打开的文件连接 调用。
# default settings for writeLines(): sep = "\n", useBytes = FALSE
# so: sep = "" would join all together e.g.
一个简单的writeLines()是什么?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
or
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
根据最佳答案:
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
注意,youobject需要是字符串格式;如果需要,使用as.character()进行转换。
但是对于每次保存尝试来说,输入太多了。让我们在RStudio中创建一个代码片段。
在Global Options >> Code >> Snippet中,键入以下内容:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
然后,在编码过程中,输入wfile并按Tab键。
我将使用cat()命令,如下例所示:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
然后,您可以使用R with查看结果
> file.show("outfile.txt")
hello
world