在R中的每个外部循环迭代中打印j

时间:2011-12-09 19:19:41

标签: r

对于以下代码:我无法弄清楚为什么j不会在每个外部循环迭代中打印。

x = 0

for (j in 1:15)
{
for (i in 1:100000)
{
x = x + 1
}
print(j)
}

R似乎正在做的是运行整个事情,最后打印出所有j,而不是逐个打开每个循环迭代。

似乎应该在每次循环迭代后打印j,我在这里缺少什么?

有没有办法让每个外部循环迭代打印出j

谢谢

3 个答案:

答案 0 :(得分:14)

我猜你正在使用Windows Rgui,它缓冲了它的控制台输出,然后以块的形式写出来(参见R Windows FAQ 7.1)。要强制立即打印到控制台,您只需在flush.console()声明后添加对print()的调用。

x = 0

for (j in 1:15) {
    for (i in 1:100000) {
        x = x + 1
    }
    print(j)
    flush.console()
}

答案 1 :(得分:5)

R输出通常是缓冲的。你可以通过两种方式规避这一点。要么(仅在Windows,IIRC)你可以去R Gui的菜单,并选择Misc - >缓冲输出(或按Ctrl-W)以禁用缓冲(通常会降低执行速度),或者您可以在任何时候调用flush.console()以确保实际显示输出(例如显示进度)。

答案 2 :(得分:1)

不熟悉R,但该代码看起来适合您要执行的操作。可能与输出缓冲有关,因为我遇到了PHP中的相同问题,其中整个脚本在呈现任何输出之前运行。