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