中断运行 R 脚本的函数是什么?

What function to interrupt the running R script?

我是 R 的初学者。我希望能够在条件为真时中断当前 运行 脚本。我发现最接近的是 ps_kill 函数,它使 Rstudio 崩溃。

df <- data.frame(one = c(1,2,NA,4,NA), two = c(NA,NA,8,NA,10))

if (sum(is.na(df)) > 3)
{
ps_kill(p = ps_handle())
}

有没有我可以用来替换 ps_kill 的函数来中断脚本而不会使 Rstudio 崩溃?

如果您有很长的 运行 代码,您可以尝试使用 R studio 中控制台面板右上角的 'Stop' 按钮。

如截图所示。 https://prnt.sc/1txafh0

希望这就是您要找的!

如果您 运行 使用 Rscript 或源代码,stop 函数将抛出错误并有效地终止您的脚本。但请记住,这将因错误而终止。例如:

# A function that will throw an error and quit
test <- function() {
  print("This is printed")
  stop()
  print("this is not printed")
}
test()

请注意,您可以通过将代码包装在 try 调用中来从错误抛出代码中恢复:

# This will not throw an error and will not print the second sentence
try(test(), silent = TRUE)

如果您真的想关闭 R 而不仅仅是完成脚本,另一种解决方案是使用函数 q。这是不可恢复的(它会关闭 R 会话)。

我希望这能回答你的问题!

stop() 函数 returns 如果调用会出错,所以你可以使用它。唯一的技巧是,如果您在交互模式下使用它,则需要将所有要跳过的代码包装在一组大括号中,例如

df <- data.frame(one = c(1,2,NA,4,NA), two = c(NA,NA,8,NA,10))

{
  if(sum(is.na(df)) > 3) stop("More than three NAs")
  print("don't run this")
}

# Error: More than three NAs

注意大括号包括打印行,否则 stop 只会继续 运行 导致错误的行之后的代码,例如

if(sum(is.na(df)) > 3) stop("More than three NAs")
# Error: More than three NAs
print("don't run this")
# [1] "don't run this"

如果您 运行 处于交互模式(), stopApp 应该终止进程而不会导致错误。