有没有办法让R脚本在收到错误消息后继续而不是停止执行?

时间:2010-12-05 14:46:52

标签: r statistics

我目前正在为学校的一个项目运行ANOVA,该项目有大量可能的运行(1400左右)但是其中一些项目无法在R中运行ANOVA。我编写了一个脚本来运行所有的ANOVA,但其中一些不会运行,Rout文件给了我 contrasts<-*tmp*,value =“contr.treatment”)出错:   对比度仅适用于具有2级或更多级别的因素 电话:aov ... model.matrix - &gt; model.matrix.default - &gt;对比&LT; - 执行暂停

有没有办法编写脚本,尽管出现错误,R会使脚本继续运行?

我的整个脚本,除了文件加载,附加,创建接收器,库加载等等之外......

ss107927468.model<-aov(Race.5~ss107927468, data=snp1)
summary(ss107927468.model)

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:8)

查看函数try()及其帮助页面(?try)。您将R表达式包装在try()调用中,如果成功,则生成的对象在此示例中包含拟合模型。如果失败,则返回类"try-error"的对象。这使您可以轻松检查哪些模型有效,哪些无效。

您可以进行测试以决定是打印模型的摘要还是打印失败消息,例如:

ss107927468.model <- try(aov(Race.5~ss107927468, data=snp1))
if(isTRUE(all.equal(class(ss107927468.model), "try-error"))) {
    writeLines("Model failed")
} else {
    summary(ss107927468.model)
}

答案 1 :(得分:4)

我在failwith包中使用plyr。您可以将它与llply结合使用并围绕它包装您的函数。

答案 2 :(得分:1)

从try()的帮助页面链接的函数try()和cousins将允许您测试错误条件,采取适当的操作,如写入错误日志(或什么都不做),然后优雅地继续。