对于以下代码:我无法弄清楚为什么 j 不会在每个外部循环迭代中打印 .
j
x = 0 for (j in 1:15) { for (i in 1:100000) { x = x + 1 } print(j) }
R似乎正在做的是运行整个事情,并最终打印出所有 j ,而不是逐个打开每个循环迭代 .
似乎应该在每次循环迭代后打印 j ,我在这里缺少什么?
有没有办法让它在每个外部循环迭代中打印 j ?
谢谢
我猜你正在使用Windows Rgui,它缓冲了它的控制台输出,然后以块的形式写出来(参见R Windows FAQ 7.1) . 要强制立即打印到控制台,您只需在 print() 语句后添加对 flush.console() 的调用 .
print()
flush.console()
x = 0 for (j in 1:15) { for (i in 1:100000) { x = x + 1 } print(j) flush.console() }
R输出通常是缓冲的 . 你可以通过两种方式规避这一点 . 要么(仅在Windows,IIRC上)你可以进入R Gui的菜单,并选择Misc - > Buffered Output(或按Ctrl-W)来禁用缓冲(这通常会减慢执行速度),或者你可以调用 flush.console() any您希望确保实际显示输出的时间(例如显示进度) .
不熟悉R,但该代码看起来适合您要做的事情 . 可能与输出缓冲有关,因为我遇到了PHP中的相同问题,其中整个脚本在呈现任何输出之前运行 .
3 回答
我猜你正在使用Windows Rgui,它缓冲了它的控制台输出,然后以块的形式写出来(参见R Windows FAQ 7.1) . 要强制立即打印到控制台,您只需在
print()
语句后添加对flush.console()
的调用 .R输出通常是缓冲的 . 你可以通过两种方式规避这一点 . 要么(仅在Windows,IIRC上)你可以进入R Gui的菜单,并选择Misc - > Buffered Output(或按Ctrl-W)来禁用缓冲(这通常会减慢执行速度),或者你可以调用
flush.console()
any您希望确保实际显示输出的时间(例如显示进度) .不熟悉R,但该代码看起来适合您要做的事情 . 可能与输出缓冲有关,因为我遇到了PHP中的相同问题,其中整个脚本在呈现任何输出之前运行 .