在Rstudio中的for循环中更新图表?

5

可能是重复问题:
在RStudio中循环绘图

我正在尝试监控收敛循环的状态,但似乎无法在每次迭代时更新图形。

以下是一些示例代码:

print(plot(c(0,1)~c(0,100)))
for(i in seq(100)) {
  Sys.sleep(.1)
  print(points( runif(1)~i ))
}

注意,图表只有在所有东西都被绘制后才会更新。我需要它在每个循环迭代中更新。我认为使用`print`可以做到这一点,但它没有起作用。
更新 这是一个特定于RStudio的问题,在基础R中可以正常工作。有没有办法强制在RStudio中在每个循环迭代中绘图?

转念一想,这显然是一个RStudio的问题。 - Ari B. Friedman
1
你不应该需要打印基本图形的内容才能让它们显示出来。 - Spacedman
@Spacedman 是的,我想那只有基于网格的图形才需要它。不过,我希望它能迫使 RStudio 采取行动。显然没有。 - Ari B. Friedman
你尝试过 dev.flush() 吗? - Carl Witthoft
1
我之前曾经问过这个问题,以下是解决方案: - Rguy
1个回答

7

使用X11()(或在Windows上使用win())启动单独的图形设备,并使用它。虽然在我的RStudio设置中,绘图似乎更新得很好。我的测试只是:

plot(1:10);for(i in 1:10){points(10-i,i);Sys.sleep(1)}

我在RStudio嵌入式图形窗口中看到了第一组10个点,然后下一组以1秒间隔出现。


似乎能够正常工作...但在RStudio Server上除外,因为无法启动新的Xorg窗口。 - Ari B. Friedman
也许 RStudio 的员工会在他们的支持网站上帮助你解决这个问题,你可以把你的问题复制到这里:http://support.rstudio.org/help/discussions/problems/3729-graph-does-not-update-until-loop-completion。 - Spacedman
人们对于跨贴问题总是过于敏感... - Señor O
是的,我并没有考虑到这是跨贴发帖,因为我忘了它是公开的,而不仅仅是一份支持请求。对不起。 - Ari B. Friedman
1
现在我不知道在哪里发布我的“对我有效”的答案 - 是在这里,在RStudio帮助中,还是在聊天中。或者全部都发。 - Spacedman
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接