2014-02-22 74 views
2

我試圖用tryCatch來生成p值的列表有矩陣中有幾個行沒有足夠的觀測t檢驗。這裏是我生成到目前爲止的代碼:trycatch似乎沒有返回我的變量

pValues <- c() 
for(i in row.names(collapsed.gs.raw)){ 
    tryCatch({ 
    t <- t.test(as.numeric(collapsed.gs.raw[i,]) ~ group) 
    pValues <- c(pValues, t$p.value) 
    }, 
    error = function(err) { 
    pValues <- c(pValues, "NA") 
    message("Error") 
    return(pValues) 
    })} 

它肯定會引發錯誤[I把該消息中(「錯誤」)線,以確認]。問題是矢量pValues中沒有任何「NA」,儘管它應該。

在此先感謝您的幫助!

回答

3

你函數中的pvalues是一個局部變量。您可能可以通過<<-修復此問題,但最好讓該功能返回所需的一個值,並在sapply之外收集它們。也許像(未經測試):

pValues <- sapply(rownames(collapsed.gs.raw), function(i) { 
    tryCatch({ 
    t.test(as.numeric(collapsed.gs.raw[i,]) ~ group)$p.value 
    }, 
    error = function(err) { 
    message("Error") 
    return(NA) 
    }) 
}) 
+0

殘酷!它工作完美,它非常有意義。感謝@Aaron爲您提供快速而優質的迴應! –

相關問題