20

我正在尝试调试一个函数。我想在发生警告时显示警告,但我不明白如何更改警告设置。

4

3 回答 3

30

指定可能有用

options(warn=2, error=recover)

正如@plannapus 所提到的,warn=2会将警告升级为错误;error=recover将在发生警告(现已升级为错误)的位置进入调试/浏览器模式。(options(warn=0, error=NULL)用于恢复原始设置。)

于 2012-06-28T07:56:29.730 回答
16

options(warn=1)

阅读更多?options

于 2012-06-28T07:08:38.093 回答
10

从帮助页面options

warn:设置警告消息的处理。如果warn为负,则忽略所有警告。如果warn是零(默认值)警告将被存储,直到顶级函数返回。如果发出的警告少于 10 个,它们将被打印出来,否则会显示一条消息,说明发出了多少(最多 50 个)信号。一个被调用的对象last.warning被创建并且可以通过函数打印出来warnings。如果warn是 1,则在出现警告时打印警告。如果warn是 2 或更大,则所有警告都会变成错误。

所以options(warn=1)应该在警告发生时打印它们。

否则函数traceback()(在未识别的错误之后)会向您显示哪个子例程失败(更准确地说是“导致错误的调用序列”)。

于 2012-06-28T07:08:54.660 回答