我有两个函数: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_() :
如果在同一个函数中或由一个built_in函数产生错误,它似乎会像预期的那样工作。
f <- function() {
warning()
stop()
}
> f()
Error in f() :
In addition: Warning message:
In f() :
有人能帮我了解那里发生了什么吗?谢谢你的帮助。我使用RStudio在x86_64-w64-mingw32 32上运行RVersion3.3.2。
发布于 2018-10-10 18:49:29
我认为这是由Rstudio错误检查器造成的。当遇到错误时,Rstudio会显示追溯和调试的可能性。我相信这就是混乱的根源(包括我自己)。“第二个”错误只是Rstudio中的一个特性,它可以帮助调试,如下所示。注意右边的两个按钮,允许您“显示回溯”和“用调试重新运行”。
In Rstudio
如下所示,如果在终端中运行R,则不存在此“附加”错误。
终端中的
在Rstudio中的全局选项中,在General选项卡下,可以关闭调试错误处理程序的使用。您也可以在错误的调试->下这样做。然后,Rstudio将不显示“附加”消息。
编辑:在进一步研究的时候,有一些奇怪的事情正在进行。下面,我试图通过以下观察来使错误和警告消息更具有信息性:
f()
,我并不完全清楚错误检查器何时出现,何时不出现。我对Rstudio的内部结构一无所知,但它绝对是导致这些小问题的错误检查器。
https://stackoverflow.com/questions/52744431
复制相似问题