我正在尝试使用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/

10-12 16:30