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)。