2010-12-05 14 views
8

我目前正在爲有大量可能運行(1400左右)的學校項目運行ANOVA,但其中一些無法在R中運行ANOVA。我編寫了一個腳本來運行所有ANOVA,但其中一些將不會運行,並且Rout文件給我 contrasts<-*tmp*,value =「contr.treatment」)中的錯誤: 對比度只能應用於具有2個或更多級別的因子 調用:aov ...模型。矩陣 - > model.matrix.default - >對比< - 執行停止有沒有什麼辦法讓R腳本在接收到錯誤信息而不是停止執行之後繼續?

有沒有什麼辦法可以讓腳本儘可能的繼續執行腳本?

我的整個腳本,然後其他的文件加載,安裝,創建一個水槽,庫加載等是...

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

任何幫助,將不勝感激。

+0

今天有些新的答案。在parse(「file.R」)的結果中的每個表達式上,或者http:// http://stackoverflow.com/a/14612524/403310(循環嘗試(eval(...))` stackoverflow.com/a/14613363/403310(`evaluate`包) – 2013-01-30 21:59:10

回答

8

查看功能try()和它的幫助頁面(?try)。您將R表達式包裝在try()調用中,如果成功,則在此情況下,生成的對象將包含擬合模型。如果失敗,則返回類"try-error"的對象。這使您可以輕鬆檢查哪些模型有效,哪些沒有。

你可以做的測試,以決定是否打印出摘要我在plyr包中使用failwith模型或只是一個失敗的消息,例如:

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) 
} 
+0

快速更新:從2013年2月12日起,失敗的`try`對象的類似於`try-error`。 – 2013-02-12 19:28:12

+0

@Fr。謝謝你,我不認爲這已經改變了,所以也許我把`tryCatch()`混淆了這個問題?不管怎麼說,謝謝你指出這個問題 – 2013-02-12 20:16:53

1

從try()的幫助頁面鏈接的函數try()和堂兄弟將允許您測試錯誤條件,採取適當的操作,如寫入錯誤日誌(或無所事事),然後優雅地繼續。

4

。您可以將它與llply結合使用並圍繞它包裝您的功能。

相關問題