R:在 `browser()` 中使用 `future::plan(sequential)` 时如何启用打印到控制台?

R: How to enable printing to console when using `future::plan(sequential)` when in `browser()`?

未来的软件包很棒,但是当使用 future::plan(sequential) 进行调试时,任何 print 都不会打印到控制台。

我认为有一个选项可以启用打印到控制台。

希望发帖能使其在未来更容易被谷歌搜索。

小呆的回答是最好最稳健的。我在这里记录了一个单独的解决方法,当编辑底层 future.apply() 调用的参数不方便时(例如,调用在一个包中),这可能对某些用户有用。

调用browser()后,您可以在提示符处输入sink()。现在输出到终端。对此的主要警告是,当 future.apply 尝试关闭 sink() 连接时,将会出现警告,因为连接已经关闭:

Warning in base::sink(type = "output", split = FALSE) :
  no sink to remove

如果您有设置 options(warn = 2) 的好习惯,这尤其烦人。要临时解决此问题,您可以考虑临时设置 options(warn = 0).

(这里是future的作者:)在future(>=1.20.1)[2020-11-03]中,官方推荐的方案是使用:

plan(sequential, split = TRUE)

这适用于 browser() 和朋友。