当我在R脚本中选择几行代码并运行时,RStudio将“平稳地”运行所有代码,即使中间有一些警告和错误。结果,我必须仔细检查“控制台”窗口,并查看是否有任何红线。这确实很耗时,我可能会错过这些错误。当发生错误或警告时,有什么方法可以使运行停止?
答案 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)
有多种方法可以在遇到错误时强制脚本停止:
source(yourscript.R)
运行脚本; 如果您确实想在发生警告时停止脚本,则可以通过在脚本开始时使用options(warn = 2)
来强制警告为错误。如果您只是想摆脱红色(lol),还可以使用suppressWarnings()
取消已检查的无害警告,或使用options(warn = -1)
取消脚本的所有警告。
但是请小心在已保存的脚本之外使用options()
,以免忘记全局禁用的警告,或者将它们变成错误。
取决于脚本的大小,您可能只想使用CTRL + Enter逐位运行它,而不是选择行。