R:我没有暂停我的代码

时间:2014-11-04 18:57:02

标签: r pausing-execution

我试图暂停我的代码一段时间,是时候观察这些情节。

我试过了:

print('A')
something = readline("Press Enter")
print('B')
print('C')

,然后没有停顿,行print('B')被送到readline并存入something,因此只有AC被打印在屏幕上。请注意,如果我在Something = readline("Press Enter")print("B")之间添加一个空行,则print("B")会在屏幕上打印,但控制台仍然不允许用户在继续之前按Enter键。

我试过了:

print('A')
Sys.sleep(3)
print('B')
print('C')

程序在启动前等待3秒钟,然后运行"通常"没有在print('A')print('B')之间暂停。

我有什么理解?


这是我的R版本:R 3.1.1 GUI 1.65 Snow Leopard build (6784)

1 个答案:

答案 0 :(得分:1)

readline的问题在于,如果将脚本粘贴到R控制台或从Rstudio中执行,则会读取redline函数,然后读取脚本的下一行作为控制台条目,在您的情况下,将something的值设置为print('B)

解决此问题的一种简单方法是将整个代码粘贴到函数中,然后调用函数来运行它。所以,在你的情况下:

myscript = function(){

  print('A')
  something = readline(prompt = "Press Enter")
  print('B')
  print('C')

}

myscript()

这个的输出(在Rstudio中,R版本3.1.1):

[1] "A"
Press Enter
[1] "B"
[1] "C"

这对我来说总是觉得有些黑客,但它本质上是readline documentation在其示例中推荐的内容。

我的代码中从未使用sleep,所以我无法帮助您。

根据评论进行编辑以澄清:仅当myscript()是脚本的最后一行,或者在运行脚本后将其手动输入控制台后,才会生效生成函数。否则,您将遇到与以前相同的问题 - 将自动输入下一行代码。