避免在 R 中覆盖文本文件

Posted

技术标签:

【中文标题】避免在 R 中覆盖文本文件【英文标题】:Avoid overwriting a text file in R 【发布时间】:2015-07-10 10:53:36 【问题描述】:

我有以下简单的 R 代码:

sink("output.txt", type=c("output", "message"))
cat("Hello", append = TRUE)
cat("World", append = TRUE)
sink(NULL)

它只是将 R 控制台写入文本文件。我想把它放在一个 R 源文件(“.r”)中并多次运行它。我希望输出如下:

file.show("output.txt")
Hello
World
Hello
World

如果我运行两次,我现在看到:

Hello
World

好像已经被覆盖了。

【问题讨论】:

试试sink("output.txt", type=c("output", "message"), append=TRUE) 我也遇到了这个问题:***.com/q/17710469/903061>。如果您阅读?cat,则append 参数仅在您使用catfile 参数时才重要。 @RichardScriven:你是对的! sink() 有它自己的 append,正如你所说,只要我不调用 sink(NULL),我什至不需要使用 append。请张贴你的答案。谢谢! 【参考方案1】:

sink() 有自己的 append 参数。正如 Gregor 所说,cat() 中的 append 仅在使用 file 时才有效。

但是,如果您将所有cat() 调用放在sink() 调用之间,则根本不需要使用append,因为sink() 将继续附加到文件中,直到您调用sink(NULL)

但对于你的情况,我认为你想为你的 sink() 块做这样的事情:

sink("output.txt", type=c("output", "message"), append = TRUE)
cat("Hello", "\n")
cat("World", "\n")
sink(NULL)

或者更简单地说,

sink("output.txt", type=c("output", "message"), append = TRUE)
cat("Hello", "World", sep = "\n")
sink(NULL)

重复此操作两次,我们已创建文件并附加到它

Hello
World
Hello
World

【讨论】:

以上是关于避免在 R 中覆盖文本文件的主要内容,如果未能解决你的问题,请参考以下文章

python 更新文本文件内容

在写入函数中附加文本 [R]

python文本操作

python如何写入文本的最末行?

将文件追加到不覆盖的文本文件中

如何在javascript中写入文本文件而不覆盖文本?