TryCatch,它向我的向量返回一个值

时间:2016-10-27 03:59:42

标签: r exception try-catch

所以我正在为一堂课写一些R代码。

library(pwr)
delta <- c(2.5, 5, 7.5,10)
v <- c(4,6,9,13)
size <- vector()


for (i in (v)){
  for (j in (delta)){
    tryCatch({
fRough <- sqrt(((1/i)*(j)^2)/(2*ucb2))
samplesize <- pwr.anova.test(k =i, f = fRough, sig.level = 0.05, power = 0.9)
size <- c(size, (trunc((samplesize[["n"]]),0)+1)*i)
    }, error = function(e)(size <- c(size, i*2)))
  }
}

ucb2只是一些浮点值。我想要运行这个循环但是当delta是7.5和10时它会给出一个错误。我希望我的代码在遇到错误时输出(i * 2)的值。我尝试使用错误功能,但似乎没有用。此外,有人可以建议我可以学习功能(e),功能(cond)等的材料。我无法在SO上找到答案。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试在错误功能中更新size。将size更新为错误函数的返回值将起到作用:

for (i in (v)){
  for (j in (delta)){
    size <- tryCatch({
      fRough <- sqrt(((1/i)*(j)^2)/(2*ucb2))
      samplesize <- pwr.anova.test(k =i, f = fRough, sig.level = 0.05, power = 0.9)
      c(size, (trunc((samplesize[["n"]]),0)+1)*i)
    },error = function(e) c(size, i*2))
  }
}