tryCatch не возвращает мою переменную

Я пытаюсь использовать 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)

Решение Вопроса

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)
  })
})
 Aidan Quinn22 февр. 2014 г., 16:21
Brutal! Это сработало отлично, и это имеет смысл. Спасибо @Aaron за ваш быстрый и отличный ответ!

Ваш ответ на вопрос