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()
和朋友。
未来的软件包很棒,但是当使用 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()
和朋友。