R:动态重定向到标准输出和文件

R:动态重定向到标准输出和文件,r,stdout,sink,R,Stdout,Sink,有没有一种方法可以将R输出重定向到一个文件中,同时动态地将其打印到标准输出? 我想监控进度并将其记录在文件中。sink()似乎不能两者兼得 在Unix上找到了函数tee(我使用Mac和Linux),但可能有一个R解决方案。 谢谢 也许您可以发送到接收器,比如说outfile.txt,然后在另一个进程中启动tail-f outfile.txt sink("outfile.txt") system("tail -f outfile.txt &") 函数sink是重定向输出的标准R方式。它有

有没有一种方法可以将R输出重定向到一个文件中,同时动态地将其打印到标准输出? 我想监控进度并将其记录在文件中。sink()似乎不能两者兼得

在Unix上找到了函数tee(我使用Mac和Linux),但可能有一个R解决方案。
谢谢

也许您可以发送到接收器,比如说
outfile.txt
,然后在另一个进程中启动
tail-f outfile.txt

sink("outfile.txt")
system("tail -f outfile.txt &")

函数
sink
是重定向输出的标准R方式。它有一个参数
split
,当设置为
TRUE
时,命令输出仍将打印到
stdout

从文档来看,我的重点是

拆分
逻辑:如果为TRUE,则输出将发送到新接收器和当前输出流,与Unix程序tee类似

以下示例显示了此行为。
首先是一个数据集,用于运行具有大量写入输出的命令

set.seed(1234)
x <- 1:10
y <- x + rnorm(10, mean = 2, sd = 4)
summary
输出到stdout和文件
sink.txt

清理一下

unlink('sink.txt')
回到我原来的地方

setwd(old_dir)

请参阅参数
split-logical:如果为TRUE,输出将发送到新接收器和当前输出流,如Unix程序tee。
谢谢,这正是我所需要的(搜索之前跳过了阅读文档)。它适用于输出,而不是错误消息,但这很好:接收器中出错(msg,type=“message”,split=TRUE):无法拆分消息连接
unlink('sink.txt')
setwd(old_dir)