2011-08-20 26 views
2

在我的[R腳本,我做執行NLS得到擬合值:[R腳本的問題 - is.na告訴我的條件有長度> 1

fit <- nls(...) 

,然後在那之後,我測試,如果NLS通過這樣成功:

if(is.na(fit)) { 
    print("succeeded") 
} 

,但我得到警告:

the condition has length > 1 and only the first element will be used 

我在做這錯了嗎?如果是這樣,我該怎麼辦?如果不是,我該如何刪除警告?謝謝!

回答

3

nls如果擬合失敗會導致錯誤。所以,之後try(nls(...))是正確的方法。

這裏是一段代碼,我使用nls適合不確定數據時使用:

fit <- NULL 
while (TRUE) { 
    start <- list(...) # try somewhat randomized initial parameter 
    try(fit <- nls(..., start = start)) # performe nls 
    if (!is.null(fit)) break; 
} 
+0

我覺得<'適應 - 嘗試(NLS(...);如果(繼承(FIT,「試試吧! - 「錯誤」))break'是一個更標準的習慣用語......?同樣,你可以使用'repeat'而不是'while(TRUE)'...... –

+0

@Ben Bolker好點。 – kohske

相關問題