【发布时间】:2023-03-06 11:22:01
【问题描述】:
我有下面的代码,它是一个重复 100 倍 t 检验的函数,以从随机样本组(grp1 和 grp2)中产生所需的功率值。我想要做的是重复此函数 X 次(X 是用户输入的值)并每次在向量中捕获值(在本例中为 pwr)。我玩过 repeat 和 lapply 函数,但要么重复相同的值,要么什么都没有。有人可以帮我指明一个方向来完成我想做的事情吗?
fun <- function(n1, n2, mu1, mu2, sig1, sig2, reps){
grp1 <- matrix(rnorm(reps*n1, mu1, sig1), nrow = n1, ncol = reps) # Generate random group 1
grp2 <- matrix(rnorm(reps*n2, mu2, sig2), nrow = n2, ncol = reps) # Generate random group 2
pvals <- NULL
for(i in 1:reps){
pvals[i] <- t.test(grp1[,i], grp2[,i])$p.value
}
pwr <- sum(pvals < 0.05)/reps
print(pwr)
}
运行上述代码后的示例答案:
fun(20,30,25,32,15,20,100)
[1] 0.24 # <-This is the end value I want 1000x placed in a vector
我想要的示例答案:
[1] 0.48 0.42 0.68 0.17 0.2 0.97 0.95 0.53 0.42 0.61 0.64 0.62 0.42 0.40 0.57 0.50
...
...
...
[997] 0.85 0.37 0.40 0.67
【问题讨论】: