我正在为一个项目做一些功率计算。代码正在工作,但我的for循环不工作。我有两个问题
a) 有人能告诉我哪里出了问题吗b) 这个有purrr选项吗
install.packages("WebPower")
library(WebPower)
rate <- function(cases,weeks,population){cases/weeks/population}
rate <- rate(cases = 243,weeks = 15,population = 153126)
wp.poisson(exp0 = rate*2,exp1 = 0.5,alpha = 0.05,power = 0.8,alternative ='less',family = 'Poisson')
res_0.5 <- wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = 0.5,alpha =
0.05,alternative ='less',family = 'Poisson')
res_0.4 <- wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = 0.4,alpha =
0.05,alternative ='less',family = 'Poisson')
res_0.3 <- wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = 0.3,alpha =
0.05,alternative ='less',family = 'Poisson')
res_0.2 <- wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = 0.2,alpha =
0.05,alternative ='less',family = 'Poisson')}
for(i in seq(0.2,0.5,0.1)){
paste0('res_',i) <- wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = i,alpha =
0.05,alternative ='less',family = 'Poisson')}
如果我们需要循环,请在exp1
值上循环。最好将输出存储在list
中,而不是在全局环境中创建多个对象。
v1 <- c(0.5, 0.4, 0.3, 0.2)
out <- lapply(v1, function(ex)
wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = ex,
alpha = 0.05,alternative ='less',family = 'Poisson'))
names(out) <- paste0('res_', v1)
list2env(out, .GlobalEnv)
或purrr
中的map
library(purrr)
out <- map(v1, ~ .x
wp.poisson(n = seq(80000, 200000, 10000), exp0 = rate*2,exp1 = .x,
alpha = 0.05,alternative ='less',family = 'Poisson'))
然后在进行CCD_ 6 之前更改CCD_
在for
循环中,我们需要assign
for(i in seq(0.2,0.5,0.1)){
assign(paste0('res_',i), wp.poisson(n = seq(80000, 200000, 10000),
exp0 = rate*2,exp1 = i,alpha =
0.05,alternative ='less',family = 'Poisson'))
}