所以我正在为一堂课写一些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上找到答案。
提前感谢您的帮助。
答案 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))
}
}