禁用存储错误的回溯

时间:2014-09-16 09:27:46

标签: r error-handling traceback

有没有办法暂时禁用R中的错误回溯存储(对于会话)?

我问的原因是ggplot2有long-running problem,他们无法修复。不知何故,整个数据集都存储在回溯中,如果使用非常大的数据集,这意味着错误输入的变量名称会让您暂停10分钟。

特别是当我为非常大的数据制作复杂的图时,这是严重的。通常这些都是小错别字,我不需要回溯,只是错误信息就可以了。

我试过

options(error = expression(NULL))

但显然在存储回溯之后会调用该处理程序(挂起仍然存在)。

可重复的例子

library(ggplot2)
data(diamonds)
diamonds = diamonds[sample(x=nrow(diamonds),size=200000,replace=T),]
qplot(data=diamonds, wrong, var)

1 个答案:

答案 0 :(得分:0)

我没有想到的一个显而易见的事情就是将调用包裹在tryCatch中,如下所示:

tryCatch({
    print(qplot(data=diamonds, wrong, var))
}, error = function(e){warning(e)})

在tryCatch中打印内部的图片非常重要,否则一旦自动打印返回的绘图对象就会出现错误。

我仍然会对options(warn=2)的反向等价感兴趣(即不是将警告变成错误以便可以跟踪它们,而是将错误变成警告,因此它们不会产生巨大的追溯)