附加警告消息返回错误而不是警告

时间:2018-10-10 16:02:54

标签: r rstudio

我有两个函数,f_引发错误,而f引发警告,然后再调用f_

f_ <- function() stop()
f <- function() {
  warning()
  f_()
}

由于我在错误之前发出了警告,所以R会生成“其他警告消息”,但是此警告中的消息不是我的f警告,而是f_中产生的错误,称为第二次错误:

> f()
Error in f_() : 
In addition: Warning message:
In f() :
  Error in f_() :

如果错误是在相同的函数中或由内建函数产生的,则按预期方式工作。

f <- function() {
  warning()
  stop()
}
> f()
Error in f() : 
In addition: Warning message:
In f() : 

有人可以帮助我了解那里发生的事情吗? 谢谢你的帮助。 我正在使用RStudio在x86_64-w64-mingw32上运行R版本3.3.2。

1 个答案:

答案 0 :(得分:2)

我认为这是由Rstudio错误检查器引起的。遇到错误时,Rstudio将显示追溯和调试的可能性。我相信这是造成混乱的根源(包括我自己在内)。 “第二个”错误只是Rstudio中的一项功能,可帮助调试,如下所示。请注意右侧的两个按钮,可让您“显示回溯”和“使用调试重新运行”。

在Rstudio中 enter image description here

如下所示,如果您在终端中运行R, 此“其他”错误不存在。

在终端机中 enter image description here

在Rstudio的全局选项的“常规”选项卡下,您可以关闭调试错误处理程序的使用。您也可以在Debug-> On Error下执行此操作。 这样,Rstudio将不会显示“其他”消息。

编辑: 经过进一步调查后,发现 有点奇怪。下面,我通过以下观察尝试使错误和警告消息更具参考性:

  • 连续多次调用f(),对于错误检查器何时出现以及何时不出现,我还是不太清楚。
  • 出现错误检查器 时,不显示警告消息。当错误检查器未出现时,将显示警告消息。

我对Rstudio的内部知识一无所知,但这绝对是导致这些次要问题的错误检查器。

enter image description here

相关问题