我正在尝试让R暂停代码执行,以供用户查看以前的控制台输出,以验证文件链接是否已正确匹配(使用RegEx将文件名与各自的对象进行匹配)。
从其他一些答案中,我想到了:
readline(prompt="Press [enter] to continue or [esc] to exit")
作为独立的代码行,它可以按预期工作,但是一旦我在代码下面添加代码并将整个块发送到控制台,它就直接通过readline
调用而运行:< / p>
readline(prompt="Press [enter] to continue or [esc] to exit")
x <- 1
y <- 2
有没有办法让R实际上在这里暂停?
我也尝试过将readline
包装在一个函数中,但仍然无法正常工作
pause <- function(){
p <- readline(prompt="Press [enter] to continue or [esc] to exit")
return(p)
}
pause()
x <- 1
y <- 2
编辑:
如果我通过source()
调用脚本,则readline
可以正常工作。有没有办法做到这一点的方式?
答案 0 :(得分:2)
通过“将整个块发送到控制台”,听起来好像您正在将代码复制粘贴到正在运行的R实例中。
如果这样做,R会在收到每一行后立即按收到的顺序运行。如果有任何行尝试输入,则该输入将来自您要复制粘贴的任何内容。因此,如果您复制粘贴此内容:
readline(prompt="Press [enter] to continue or [esc] to exit")
x <- 1
y <- 2
R将首先读取并运行第一行。第一行将运行并读取输入的下一行(此处为空行)。然后,R将返回并读取并执行其他两行。
您需要先将代码完全输入到R中,然后再运行。尝试将整个内容包装在一个函数中:
dostuff <- function(){
readline(prompt="Press [enter] to continue or [esc] to exit")
x <- 1
y <- 2
}
dostuff()
答案 1 :(得分:1)
使用scan
将始终有效:
message("Press [enter] to continue or [esc] to exit")
scan(quiet = TRUE, what = "")