【问题标题】:TryCatch which returns a value to my vectorTryCatch 向我的向量返回一个值
【发布时间】:2017-03-09 14:57:17
【问题描述】:

所以我目前正在为一个类编写一些 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 上找到答案。

提前感谢您的帮助。

【问题讨论】:

  • 试试 Hadley 的 Advanced R 的 this chapter 开始异常处理。

标签: r exception try-catch


【解决方案1】:

问题是您试图在错误函数中更新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))
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多