使用map2/pmap计算样本量时返回空列表的问题排查
问题原因与解决方法
问题根源
你用expand.grid()生成的配对矩阵out,默认列名是Var1和Var2,而非你定义的f和p。调用out$f和out$p会返回NULL,map2接收两个空向量,因此返回空列表。
修正方案
方案一:生成配对矩阵时指定列名
给expand.grid()的参数命名,让输出矩阵保留f和p的列名:
f <- seq(0.1, 0.6, 0.1) p <- seq(0.7, 0.9, length.out=6) out <- expand.grid(f = f, p = p) # 显式指定列名 library(pwr) library(purrr) map2(.x=out$f, .y=out$p, ~ pwr.anova.test(k=5, f=.x, power=.y))
方案二:使用默认列名调用
直接用expand.grid()生成的默认列名Var1和Var2传入map2:
f <- seq(0.1, 0.6, 0.1) p <- seq(0.7, 0.9, length.out=6) out <- expand.grid(f, p) library(pwr) library(purrr) map2(.x=out$Var1, .y=out$Var2, ~ pwr.anova.test(k=5, f=.x, power=.y))
额外优化:直接提取样本量
如果只需要每个参数组合对应的样本量(n),可以用map2_dbl直接提取数值:
map2_dbl(out$f, out$p, ~ pwr.anova.test(k=5, f=.x, power=.y)$n)
内容的提问来源于stack exchange,提问作者spindoctor
相关产品推荐
相关产品推荐

