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

问题描述 投票:1回答:2

是否有一种方法可以将R-输出重定向到文件中,并同时将其立即打印到stdout?我想监视进度并将其记录在文件中。似乎,sink()不能同时做。

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

r stdout sink
2个回答
1
投票

功能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)

0
投票

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

sink("outfile.txt")
system("tail -f outfile.txt &")
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.