关于接收器的问题,在R中

时间:2013-07-17 16:12:19

标签: r file-io

假设我想使用接收器写入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)等。

1 个答案:

答案 0 :(得分:3)

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

,你需要使用它

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

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