r语言 - 如何在按下某个键之前暂停代码执行?



我正在尝试让 R 暂停代码执行,以便用户查看一些先前的控制台输出,以验证文件链接是否已正确匹配(使用 RegEx 将文件名与其各自的对象匹配(。

从其他一些答案中,我想出了:

readline(prompt="Press [enter] to continue or [esc] to exit")

作为独立的代码行,它按预期工作,但是一旦我在它下面添加代码,并将整个块发送到控制台,它就会直接通过readline调用而不停止:

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确实可以正常工作。有没有办法在不这样做的情况下获得这种行为?

通过"将整个块发送到控制台",听起来像是将代码复制粘贴到正在运行的 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()

使用scan始终有效:

message("Press [enter] to continue or [esc] to exit")
scan(quiet = TRUE, what = "")

最新更新