【问题标题】:for loop with 2 vectors to calculate power in R fails用于计算 R 中功率的 2 个向量的 for 循环失败
【发布时间】:2021-04-21 11:41:09
【问题描述】:

我有 2 个包含数字的向量,我用来模拟我的学习能力,但在 for loop 部分不断收到此错误

Error in pwr.2p2n.test(h, n1 = i, n2 = j, sig.level = 0.05) : 
  number of observations in the first group must be at least 2

非常感谢您提出建议以使其正常工作

##示例代码

grp1.n <- seq(30,150,5)  ##group 1, N
grp2.n <- seq(30,150,5)-15  ## group 2, N - 15

h=0.85 #specify large effect size

grp1.length <- length(grp1.n)
grp2.length <- length(grp2.n)

power.holder <- array(numeric(grp1.length*grp2.length), dim=c(grp1.length,grp2.length),dimnames=list(grp1.n,grp2.n))

for (i in 1:grp1.length){
  for (j in 1:grp2.length){
    result.pwr.2p2n.test <- pwr.2p2n.test(h, n1=i, n2=j, sig.level=0.05)
    power.holder[i,j] <- ceiling(result.pwr.2p2n.test$power)
    return(result.pwr.2p2n.test)
  }
}

【问题讨论】:

  • 错误信息很清楚。在您的内部循环中,您将 i 和 j 传递给 pwoer calc 函数。但是 n1 和 n2 必须至少为 2。但是由于您的 i 和 j 循环从 1 开始,这将失败。
  • 请问如何让power calc function 获取向量中的实际数字?我试过这个但仍然失败。谢谢你的帮助。 for (i in 1:length(grp1.n)){ for (j in 1:length(grp2.n)){ result.pwr.2p2n.test &lt;- pwr.2p2n.test(h, n1=i, n2=j, sig.level=0.05) power.holder[j,i] &lt;- ceiling(result.pwr.2p2n.test$power) return(result.pwr.2p2n.test) } }

标签: r arrays for-loop vector


【解决方案1】:

我不完全确定这是否是您想要的,但我认为是:

grp1.n <- seq(30,150,5)  ##group 1, N
grp2.n <- seq(30,150,5)-15  ## group 2, N - 15

h=0.85 #specify large effect size

grp1.length <- length(grp1.n)
grp2.length <- length(grp2.n)

power.holder <- array(numeric(grp1.length*grp2.length), dim=c(grp1.length,grp2.length),dimnames=list(grp1.n,grp2.n))

for (i in 1:grp1.length){
  for (j in 1:grp2.length){
    result.pwr.2p2n.test <- pwr.2p2n.test(h, n1=grp1.n[i], n2=grp2.n[j], sig.level=0.05)
    power.holder[i,j] <- ceiling(result.pwr.2p2n.test$power)
    return(power.holder)
  }
}

更改在 pwr.2p2n.test 函数以及您要返回的对象中。

旧:pwr.2p2n.test(h, n1=i, n2=j, sig.level=0.05)
新:pwr.2p2n.test(h, n1=grp1.n[i], n2=grp2.n[j], sig.level=0.05)

请注意,您的代码中还缺少一个 } 括号。

【讨论】:

    猜你喜欢
    • 2017-01-23
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    相关资源
    最近更新 更多