从 bash 定向时,R 进度条未捕获在日志文件中

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

在Linux中,当我重新路由包含进度条(来自progressr包)的R代码的输出时,日志文件中没有捕获进度条(我正在使用

tail -f output.log
监视日志文件)。我需要此设置才能工作,因为执行 R 代码的应用程序之一正在监视这些日志文件并在其 GUI 中显示它们。

下面是我在centos 7 (R 4.0.2) 中测试的代码。该代码位于名为 test.R 的文件中。

require(progress)
require(progressr)

slow_sum <- function(x) {
  p <- progressr::progressor(along = x)
  sum <- 0
  for (kk in seq_along(x)) {
    Sys.sleep(1)
    sum <- sum + x[kk]
    p(message = sprintf("Adding %g", x[kk]))
  }
  sum
}

progressr::handlers(
  list(progressr::handler_progress(
    format   = ":spin :current/:total (:message) -- [:bar] :percent in :elapsed ETA: :eta\r",
    width    = 60,
    complete = "+")))
progressr::with_progress(y <- slow_sum(1:10))

然后当我尝试从终端执行以下代码时

R --no-save --args < ~/test.R >> output.log 2>&1

并使用

tail -f output.log
监视进度,我在日志文件中没有收到任何进度条更新。有人有线索吗?

r logging centos progress-bar stderr
1个回答
0
投票

多亏了保罗的评论,我得到了很好的引导。需要完成两件单独的事情,

options(progressr.enable=TRUE)
... list(progressr::handler_progress(enable = TRUE...
。这些在非交互模式下启用进度消息。

© www.soinside.com 2019 - 2024. All rights reserved.