遇到错误或警告时如何使R停止

时间:2019-03-07 12:24:38

标签: r rstudio

当我在R脚本中选择几行代码并运行时,RStudio将“平稳地”运行所有代码,即使中间有一些警告和错误。结果,我必须仔细检查“控制台”窗口,并查看是否有任何红线。这确实很耗时,我可能会错过这些错误。当发生错误或警告时,有什么方法可以使运行停止?

2 个答案:

答案 0 :(得分:2)

RStudio当前通过将所选文本粘贴到控制台中来工作。不管是否有错误。更好的方法是获取文本并将其来源。

您可以使用来获取所选文本

selected <- rstudioapi::getSourceEditorContext()$selection[[1]]$text

如果您获取此文本而不是粘贴它,它将在第一个错误处停止。使用

source(exprs = parse(text = selected), echo = TRUE)

另一种方法是将文本复制到剪贴板,然后从那里进行采购。我不认为RStudio当前可以做到这一点,但是您可以添加一个。

此功能从Windows和MacOS上的剪贴板读取;我不确定pbpaste是否在Linux上普遍可用,但那里应该有一些等效的东西:

readClipboard <- function() {
  if (.Platform$OS.type == "windows") 
    lines <- readLines("clipboard")
  else
    lines <- system("pbpaste", intern=TRUE)
  lines
}

此代码从剪贴板中获取文本:

source(exprs = parse(text = readClipboard()), echo = TRUE)

您可以将这两项操作中的任一个作为外接程序放在RStudio的热键上。说明在这里:https://rstudio.github.io/rstudioaddins/

以上建议仅在出现错误时停止。如果您还想停止警告,请使用@FransRodenburg所说的options(warn = 2)

答案 1 :(得分:1)

有多种方法可以在遇到错误时强制脚本停止:

  1. 保存脚本并使用source(yourscript.R)运行脚本;
  2. 将脚本包装在一个函数中,然后尝试使用该函数;
  3. 处理Rmarkdown文件并尝试执行包含您要运行的所有代码的块(或尝试编织该代码);

如果您确实想在发生警告时停止脚本,则可以通过在脚本开始时使用options(warn = 2)来强制警告为错误。如果您只是想摆脱红色(lol),还可以使用suppressWarnings()取消已检查的无害警告,或使用options(warn = -1)取消脚本的所有警告。

但是请小心在已保存的脚本之外使用options(),以免忘记全局禁用的警告,或者将它们变成错误。

取决于脚本的大小,您可能只想使用CTRL + Enter逐位运行它,而不是选择行。