我正在RStudio中使用mclapply,并且希望每个进程都有一个输出到控制台,但这似乎被某种方式抑制了(例如在这里提到的Is mclapply guaranteed to return its results in order?)。
我如何让R Studio打印类似

x <- mclapply(1:20, function(i) cat(i, "\n"))

到控制台?

我尝试过print(),cat(),write(),但它们似乎都无法正常工作。我也尝试显式设置mc.silent = FALSE而不起作用。

最佳答案

与GUI的并行处理存在问题。我编写了很多并行代码,但由于他坚持使用Rstudio而不是控制台R,这使我的同事的计算机不断崩溃。

据我了解,RStudio“不会将派生进程的输出传播到RStudio控制台。如果这样做,最好通过外壳启动R。”

对于RStudio人员而言,这是一种合理的解决方法,因为当人们尝试从一堆不同的流程输出到GUI时,并行处理通常会破坏GUI。它可以在控制台中运行(尽管通常不是按顺序进行的),但是当并行处理专家从分支线程中听到任何I / O时,他们会pin之以鼻。

如果必须从分支线程获得输出,请将它们保存在字符串中并返回。然后从主过程收集并输出。或者只是使用控制台进行并行运行。我告诉我的同事是使用lapply()在RStudio中进行所有调试和开发,然后切换到控制台进行实际运行。

关于r - 在R Studio中从mclapply打印,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17345837/

10-12 23:50