我正在尝试使用tryCatch生成p值列表,矩阵中有几行没有足够的观测值用于t检验。这是我到目前为止生成的代码:
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)
})}
它肯定会引发错误[我在message(“Error”)行中进行确认]。问题是 vector pValues中没有任何“NA”,尽管应该如此。
在此先感谢您的帮助!
最佳答案
函数中的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)
})
})
关于r - tryCatch似乎没有返回我的变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21956031/