是否有一种方法可以将R-输出重定向到文件中,并同时将其立即打印到stdout?我想监视进度并将其记录在文件中。似乎,sink()不能同时做。
在Unix(我使用Mac和Linux)上创建了函数tee,但是可能有一个R解决方案。谢谢!
功能sink
是重定向输出的标准R方式。它具有一个参数split
,当设置为TRUE
时,仍将命令输出打印到stdout
。从文档中,我的重点。
分割逻辑:如果为TRUE,则输出将发送到新接收器和当前输出流,像Unix程序tee。
下面的示例显示此行为。首先是一个数据集,用于运行具有大量书面输出的命令。
set.seed(1234)
x <- 1:10
y <- x + rnorm(10, mean = 2, sd = 4)
这些说明的目的是不要弄乱我的工作空间。随时跳过它们。
old_dir <- getwd()
setwd('~/tmp')
现在是分割的sink
示例。
sink(file = 'sink.txt', split = TRUE)
summary(lm(y ~ x))
sink(NULL)
summary
输出到标准输出和文件sink.txt
。清理。
unlink('sink.txt')
回到我过去。
setwd(old_dir)
也许您可以发送到接收器,例如说outfile.txt
,然后在另一个进程中启动tail -f outfile.txt
?
sink("outfile.txt")
system("tail -f outfile.txt &")