我试图暂停我的代码一段时间,是时候观察这些情节。
我试过了:
print('A')
something = readline("Press Enter")
print('B')
print('C')
,然后没有停顿,行print('B')
被送到readline并存入something
,因此只有A
和C
被打印在屏幕上。请注意,如果我在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)
答案 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()
是脚本的最后一行,或者在运行脚本后将其手动输入控制台后,才会生效生成函数。否则,您将遇到与以前相同的问题 - 将自动输入下一行代码。