在R脚本语言中,如何编写文本行,例如以下两行
Hello
World
到名为“output.txt”的文件?
答案 0 :(得分:368)
fileConn<-file("output.txt")
writeLines(c("Hello","World"), fileConn)
close(fileConn)
答案 1 :(得分:135)
实际上,您可以使用sink()
:
sink("outfile.txt")
cat("hello")
cat("\n")
cat("world")
sink()
因此:
file.show("outfile.txt")
# hello
# world
答案 2 :(得分:100)
我会使用cat()
命令,如下例所示:
> cat("Hello",file="outfile.txt",sep="\n")
> cat("World",file="outfile.txt",append=TRUE)
然后,您可以使用
查看R的结果> file.show("outfile.txt")
hello
world
答案 3 :(得分:43)
简单的writeLines()
是什么?
txt <- "Hallo\nWorld"
writeLines(txt, "outfile.txt")
或
txt <- c("Hallo", "World")
writeLines(txt, "outfile.txt")
答案 4 :(得分:13)
你可以在一个声明
中做到这一点cat("hello","world",file="output.txt",sep="\n",append=TRUE)
答案 5 :(得分:5)
我建议:
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.
答案 6 :(得分:2)
要完善各种可能性,如果您愿意,可以将writeLines()
与sink()
一起使用:
> sink("tempsink", type="output")
> writeLines("Hello\nWorld")
> sink()
> file.show("tempsink", delete.file=TRUE)
Hello
World
对我来说,使用print()
似乎最直观,但如果你这样做,输出就不会是你想要的:
...
> print("Hello\nWorld")
...
[1] "Hello\nWorld"
答案 7 :(得分:2)
file <- file("test.txt")
writeLines(yourObject, file)
close(file)
请注意yourObject
需要采用字符串格式;如果需要,请使用as.character()
进行转换。
但每次保存尝试的输入太多了。让我们在RStudio中创建一个片段。
在全局选项&gt;&gt;代码&gt;&gt;片段,输入:
snippet wfile
file <- file(${1:filename})
writeLines(${2:yourObject}, file)
close(file)
然后,在编码过程中,键入wfile
并按 Tab 。
答案 8 :(得分:1)
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
答案 9 :(得分:0)
使用cat或writeLines可以实现将文本行写入R 文件的快捷方式,正如许多答案中已经显示的那样。最短的可能性可能是:
cat("Hello\nWorld", file="output.txt")
writeLines("Hello\nWorld", "output.txt")
如果您不喜欢“ \ n”,还可以使用以下样式:
cat("Hello
World", file="output.txt")
writeLines("Hello
World", "output.txt")
writeLines 在文件末尾添加 newline ,而 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))
答案 10 :(得分:0)
tidyverse版本,带有管道,并且来自读者write_lines()
library(tidyverse)
c('Hello', 'World') %>% write_lines( "output.txt")
答案 11 :(得分:0)
简单的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
确保排除txt中的行名和列名,参数quote = FALSE
排除中的每行开头和结尾的引号txt。
要读回数据,可以使用text = readLines("output.txt")
。
答案 12 :(得分:0)
在较新的R版本中,writeLines
将保留文本中的返回值和空格,因此您无需在行尾添加\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)