R:同时重定向到标准输出和动态文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了R:同时重定向到标准输出和动态文件相关的知识,希望对你有一定的参考价值。
是否有一种方法可以将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 &")
以上是关于R:同时重定向到标准输出和动态文件的主要内容,如果未能解决你的问题,请参考以下文章