我正在尝试让R暂停代码执行,让用户查看一些先前的控制台输出,以验证文件链接是否已正确匹配(使用RegEx将文件名与其各自的对象匹配).
从其他一些答案中,我想出了:
readline(prompt="Press [enter] to continue or [esc] to exit")
Run Code Online (Sandbox Code Playgroud)
作为一个独立的代码行,这可以按预期工作,但只要我在其下面添加代码,并将整个块发送到控制台,它就会直接通过readline调用而不停止:
readline(prompt="Press [enter] to continue or [esc] to exit")
x <- 1
y <- 2
Run Code Online (Sandbox Code Playgroud)
有没有办法让R实际停在这里?
我也尝试过包装readline函数,但它仍然不起作用
pause <- function(){
p <- readline(prompt="Press [enter] to continue or [esc] to exit")
return(p)
}
pause()
x <- 1
y <- 2
Run Code Online (Sandbox Code Playgroud)
编辑:
如果我通过脚本调用脚本source(),readline可以正常工作.有没有办法在不这样做的情况下获得这种行为?
通过“将整个块发送到控制台”,听起来就像您正在将代码复制粘贴到正在运行的 R 实例中。
如果这样做,R 将在收到后立即按照接收到的顺序运行每一行。如果任何一行尝试接受输入,该输入将来自您复制粘贴的任何内容。所以如果你复制粘贴这个:
readline(prompt="Press [enter] to continue or [esc] to exit")
x <- 1
y <- 2
Run Code Online (Sandbox Code Playgroud)
R 将首先读取并运行第一行。第一行将运行并读取下一行输入(此处为空行)。然后R会回来读取并执行另外两行。
在运行任何代码之前,您需要将代码完全输入到 R 中。尝试将整个事情包装在一个函数中:
dostuff <- function(){
readline(prompt="Press [enter] to continue or [esc] to exit")
x <- 1
y <- 2
}
dostuff()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
275 次 |
| 最近记录: |