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

rmbxnbpk  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(106)

在Linux中,当我重新路由包含进度条的R代码的输出时(来自progressr包),日志文件中没有捕获进度条(我用tail -f output.log监视日志文件)。我需要这个设置作为我的应用程序之一,它执行R代码是监视这些日志文件,并显示在其GUI中。
下面是我在centos 7(R4.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监控进度,我在日志文件中没有得到任何进度条更新。有人有线索吗?

qojgxg4l

qojgxg4l1#

多亏了保罗的评论,我得到了一个很好的线索。需要完成两个单独的事情,options(progressr.enable=TRUE)... list(progressr::handler_progress(enable = TRUE...。这些使progressr消息在非交互模式。

相关问题