避免在 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
参数仅在您使用cat
的file
参数时才重要。
@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 中覆盖文本文件的主要内容,如果未能解决你的问题,请参考以下文章