在R脚本语言中,如何编写行文本,例如,下面两行
Hello World
到一个名为“output.txt”的文件?
fileConn<-file("output.txt") writeLines(c("Hello","World"), fileConn) close(fileConn)
实际上你可以用sink()来做:
sink()
sink("outfile.txt") cat("hello") cat("\n") cat("world") sink()
因此做:
file.show("outfile.txt") # hello # world
我将使用cat()命令,如下例所示:
cat()
> cat("Hello",file="outfile.txt",sep="\n") > cat("World",file="outfile.txt",append=TRUE)
然后,您可以使用R with查看结果
> file.show("outfile.txt") hello world
简单的writeLines()是什么?
writeLines()
txt <- "Hallo\nWorld" writeLines(txt, "outfile.txt")
或
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
为了完善可能性,你可以使用writeLines()和sink(),如果你想:
> sink("tempsink", type="output") > writeLines("Hello\nWorld") > sink() > file.show("tempsink", delete.file=TRUE) Hello World
对我来说,使用print()似乎总是最直观的,但如果你这样做,输出将不是你想要的:
print()
... > print("Hello\nWorld") ... [1] "Hello\nWorld"
你可以用一个语句来做
cat("hello","world",file="output.txt",sep="\n",append=TRUE)
基于最好的答案:
file <- file("test.txt") writeLines(yourObject, file) close(file)
注意yourObject必须是字符串格式;如果需要,使用as.character()进行转换。
yourObject
as.character()
但是这对于每一个保存尝试来说输入太多了。让我们在RStudio中创建一个代码片段。
在Global Options >> Code >> Snippet中,键入以下内容:
snippet wfile file <- file(${1:filename}) writeLines(${2:yourObject}, file) close(file)
然后,在编码过程中,输入wfile并按Tab.;
wfile
我建议:
writeLines(c("Hello","World"), "output.txt")
fileConn<-file("output.txt") # writeLines command using fileConn connection close(fileConn)
因为writeLines()的文档说:
如果con是字符串,函数调用file来获取 在函数运行期间打开的文件连接 电话。< / p >
con
file
# default settings for writeLines(): sep = "\n", useBytes = FALSE # so: sep = "" would join all together e.g.
用R将文本行写入文件的简单方法可以用猫或writeline实现,正如已经在许多答案中显示的那样。一些最短的可能性可能是:
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
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))
和cat可以接受许多对象,但writeLines只能接受一个向量:
cat("Hello", "World", sep="\n") writeLines(c("Hello", "World"))
tidyverse版本的管道和write_lines()从reader
write_lines()
library(tidyverse) c('Hello', 'World') %>% write_lines( "output.txt")
那么简单的write.table()呢?
write.table()
text = c("Hello", "World") write.table(text, file = "output.txt", col.names = F, row.names = F, quote = F)
col.names = FALSE
row.names = FALSE
quote = FALSE
text = readLines("output.txt")
在R的新版本中,writeLines将保留文本中的返回值和空格,因此不需要在行末包含\n,并且可以将一大块文本写入文件。这个例子也适用,
\n
txt <- "Hello World" fileConn<-file("output.txt") writeLines(txt, fileConn) close(fileConn)
但是您也可以使用此设置简单地包含具有结构的文本(换行或缩进)
txt <- "Hello world I can indent text!" fileConn<-file("output.txt") writeLines(txt, fileConn) close(fileConn)