1

假设我想使用 sink 写入 R 中的文件。

sink("outfile.txt")
cat("Line one.\n")
cat("Line two.")
sink()

问题1.我看到有人在最后写sink(),为什么我们需要这个?当我们没有这个时,会出现问题吗?

问题2.用for循环将多行一行一行写入文件的最佳方法是什么,您还需要格式化每一行?那就是我可能需要在每一行中有不同的数字,就像在 python 中我会使用 outfile.write("Line with number %.3f",1.231) 等。

4

1 回答 1

3

问题 1:sink函数将进入stdout流的所有文本重定向到您提供给的文件处理程序sink。这意味着通常会打印到交互式 R 会话中的任何内容现在都将写入接收器中的文件,在本例中为“outfile.txt”。当您在sink没有任何参数的情况下再次调用时,您是在告诉它继续使用stdout而不是“outfile.txt”。所以不,如果你最后不打电话,什么都不会出错sink(),但如果你想在你的 R 会话中再次开始看到输出,你需要使用它/

正如@Roman 指出的那样,最好明确告诉cat输出到文件。这样,您只获得您想要的,并期望在文件中看到,同时仍然在 R 会话中获得其余的输出。

问题二: 这也回答了问题二。R(据我所知)没有像python. 相反,您可以cat(..., file="outfile.txt")在 for 循环中使用。

于 2013-07-17T16:21:01.617 回答