gpt4 book ai didi

在 jupyter 中使用 R 实时打印到控制台

转载 作者:行者123 更新时间:2023-12-04 12:08:27 25 4
gpt4 key购买 nike

使用 R GUI 或仅从命令行使用 R,此代码会导致整数打印间隔为 0.2 秒。

相比之下,当我在 jupyter 笔记本中使用 R 时,所有打印仅在循环完成后发生。

for(x in 1:10){
print(x)
Sys.sleep(0.2)
}

我试图用 Jupyter 强制实时打印
for(x in 1:10){
print(x)
flush.console()
Sys.sleep(0.2)
}

……没有效果。结果是一样的——从 jupyter 的 for 循环内打印似乎总是延迟到循环之后。

有没有办法确保笔记本实时输出打印语句的结果?

最佳答案

目前,“触发”打印输出处理的唯一方法是使用 message("text") (而不是 print("text")cat("text") )或不将其写入循环,而是在它自己的语句中。

根本问题在于https://github.com/IRkernel/IRkernel/issues/3并且建议的修复在 https://github.com/hadley/evaluate/pull/62 -> evaluate 需要更改允许 flush.console()和 friend 一起工作。问题的要点:我们使用 evaluate执行代码并评估一次处理输出一条语句并处理输出 声明完成。不幸的是,在这种情况下,for 循环只是一个语句(就像 {...} 块中的所有内容一样),因此打印输出仅在 for 循环完成后出现在客户端中。

解决方法是使用 IRdisplay包和display_...()函数而不是 print()/cat() (或 plots ...)。但这需要对打印的内容进行完全控制:要么一切都在使用打印(并且它会延迟到完整的语句完成后),要么在该语句中不应该打印(或绘图)。如果被调用的函数打印了一些东西,输出的顺序就会错误( {print("a"); display_text("b"); print("c")} 最终会是 b a c )。使用 capture.output()可能会让你绕过这个限制,如果你真的必须......如果你使用绘图,有 are currently no workarounds除了将情节写入光盘并通过 display_png(..) 发送之外和 friend 。

关于在 jupyter 中使用 R 实时打印到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37689694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com