tryCatch似乎没有返回我的变量

时间:2014-02-22 15:03:21

标签: r error-handling

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

它肯定会抛出错误[我输入消息(“错误”)行确认]。问题是矢量pValues中没有任何“NA”,尽管它应该。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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)
  })
})