1

我正在尝试暂停我的代码一段时间,让我有时间观察这些情节。

我试过了:

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

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

我试过了:

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

print('A')程序在启动前等待 3 秒,然后“正常”运行,在和之间没有任何暂停print('B')

我有什么误解?


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

4

1 回答 1

1

问题readline在于,如果您将脚本粘贴到 R 控制台中,或者从例如 Rstudio 执行它,redline则读取该函数,然后将脚本的下一行作为控制台条目读入,在您的情况下,该条目设置somethingprint('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"

这对我来说一直感觉有点像 hack,但它本质上是readline 文档在其示例中推荐的内容。

我从来没有sleep在我的代码中使用过,所以我无法帮助你。

根据注释进行编辑以澄清:这仅适用myscript()于脚本的最后一行,或者在运行脚本以生成函数后手动输入控制台。否则,您将遇到与以前相同的问题——将自动输入下一行代码。

于 2014-11-04T19:14:53.517 回答