将文本行写入R中的文件

时间:2010-03-18 13:51:59

标签: file-io r

在R脚本语言中,如何编写文本行,例如以下两行

Hello
World

到名为“output.txt”的文件?

13 个答案:

答案 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)

基于the best answer

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)

使用catwriteLines可以实现将文本行写入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 = FALSErow.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)