我目前正在为学校的一个项目运行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)
任何帮助都将不胜感激。
答案 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将允许您测试错误条件,采取适当的操作,如写入错误日志(或什么都不做),然后优雅地继续。