如何创建一个函数,循环遍历一个向量,并提供一个在R中只有Ns的向量sampleN.TOST?

pgky5nke  于 2023-02-20  发布在  其他
关注(0)|答案(1)|浏览(90)

我创建了一个函数,该函数在三个不同的功耗场景中循环,并具有特定的CV%,但无法使其仅输出列表中的Ns(见下文):

pwr.vec = c(0.80,0.85,0.90)

sample.3.cross = function(x, pwr.vec){

  for (i in pwr.vec){
    result = list()

    sample.size = sampleN.TOST(CV = x, design = "3x3", targetpower = i, theta0 = 1.11)[['Sample size']]

    result[i] = list(sample.size)

  }
  return(data.frame(result))
}

我试过无数种方法来修改这个函数,但没有结果。当我运行这个函数时,我得到了下面的输出。

sample.3.cross(.23,pwr.vec)

data frame with 0 columns and 0 rows

我只需要一个简单的列表中的三个N。任何帮助将不胜感激。

zdwk9cvp

zdwk9cvp1#

两个问题:
1.您应该在for循环外创建列表result
1.请注意,您的i是0.80、0.85、0.90,而不是1、2和3。这意味着result[i]没有按您预期的方式工作。
修复这两个问题将产生以下结果:

library(PowerTOST)
pwr.vec = c(0.80,0.85,0.90)

sample.3.cross = function(x, pwr.vec){
  result = list()
  for (i in seq_along(pwr.vec)){
    pwr <- pwr.vec[i]
    

    sample.size = sampleN.TOST(CV = x, design = "3x3", targetpower = pwr, theta0 = 1.11)[['Sample size']]

    result[i] = list(sample.size)

  }
  return((result))
}

sample.3.cross(.23,pwr.vec)

[[1]]
[1] 48

[[2]]
[1] 54

[[3]]
[1] 66

相关问题