2015-10-21 71 views
0

我正在使用while-loop在矩陣(3723 x 223)上運行ks測試。如何跳過錯誤並使while循環繼續在R中工作?

在矩陣中,每個單元格都有NA或特定的數值。

大多數行都有足夠數量的單元進行ks-test。

但是,有些行的數字太小或NA值不足以進行ks-test。
這終止了我的while循環(當我的測試到達第1359行時)。

以下是我的while循環代碼和錯誤消息。

while(x<3724){ 
results[x,1]= 
ks.test(as.numeric(SW480ks[x,]), as.numeric(SW620ks[x,]))$p.value 
x=x+1 
} 

Error in ks.test(as.numeric(SW480ks[x, ]), as.numeric(SW620ks[x, ])) : 
    'x' is not enough data 
In addition: There were 50 or more warnings (use warnings() to see the first 50) 

我想讓我的代碼在出現錯誤消息時跳過有問題的行。

我想我需要使用if語句,但我不知道寫什麼。

非常感謝您的幫助。

+0

奇怪,我不能產生這種錯誤可言,即使我給'ks.test'單個數據點。這就是說,這真的不適合'while'循環。使用'apply'代替。 –

回答

0

看一看try()tryCatch()

while(x < 3724){ 
    test <- try(ks.test(as.numeric(SW480ks[x, ]), as.numeric(SW620ks[x, ]))) 
    results[x, 1] <- ifelse(class(test) == "try-error", NA, test$p.value) 
    x <- x + 1 
}