我有两个函数,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。
答案 0 :(得分:2)
我认为这是由Rstudio错误检查器引起的。遇到错误时,Rstudio将显示追溯和调试的可能性。我相信这是造成混乱的根源(包括我自己在内)。 “第二个”错误只是Rstudio中的一项功能,可帮助调试,如下所示。请注意右侧的两个按钮,可让您“显示回溯”和“使用调试重新运行”。
如下所示,如果您在终端中运行R, 此“其他”错误不存在。
在Rstudio的全局选项的“常规”选项卡下,您可以关闭调试错误处理程序的使用。您也可以在Debug-> On Error下执行此操作。 这样,Rstudio将不会显示“其他”消息。
编辑: 经过进一步调查后,发现 有点奇怪。下面,我通过以下观察尝试使错误和警告消息更具参考性:
f()
,对于错误检查器何时出现以及何时不出现,我还是不太清楚。我对Rstudio的内部知识一无所知,但这绝对是导致这些次要问题的错误检查器。