Reputation: 73
I'm trying to use tryCatch to generate a list of p-values there are several rows in the matrix that don't have enough observations for a t test. Here is the code I generated so far:
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)
})}
It definitely throws an error [I put in the message("Error") line to confirm]. The problem is that the vector pValues doesn't have any "NA" in it, though it should.
Thanks in advance for your help!
Upvotes: 4
Views: 1889
Reputation: 37754
The pvalues
in your function is a local variable. You might be able to fix this with <<-
, but it would be preferred to have the function just return the one desired value and collect them outside the function with sapply
. Perhaps something like (untested):
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)
})
})
Upvotes: 6