我正在努力学习如何在R中有效地使用apply系列。我有以下数字向量
>aa
[1] 0.047619 0.000000 NaN 0.000000 0.000000 0.000000 0.000000 0.000000
[9] NaN NaN 0.000000 NaN NaN NaN NaN NaN
[17] 0.000000 0.000000 NaN NaN NaN NaN NaN NaN
[25] NaN 0.100000 0.000000 0.000000 0.000000 0.000000 1.000000 NaN
[33] NaN NaN NaN NaN NaN NaN 0.133333 NaN
[41] NaN 0.000000 0.000000 0.000000 NaN NaN NaN NaN
[49] NaN
我试图从n
中获取pwr.t.test
因子,并将其中的每一个作为d
参数的输入。
我的尝试已将此作为最新结果,坦率地说,我很难过......> lapply(aa,function(x) pwr.t.test(d=x,power=.8,sig.level=.05,type="one.sample",alternative="two.sided"))
出现以下错误消息:
Error in uniroot(function(n) eval(p.body) - power, c(2 + 1e-10, 1e+07)) :
f() values at end points not of opposite sign
有关正确方法的任何想法吗?
答案 0 :(得分:0)
简答:所需的科目数量大于R检查的最大数量。添加一些检查,以便在d == 0
时不运行该功能,它将起作用。
当d = 0
时,您需要无数个主题来检测差异。您看到的错误是因为R尝试以数字方式计算功率。算法R使用首先检查N
的可能值(约2
到1e+07
)的区间界限。因为幂的函数在区间的两个端点处具有相同的符号并且在N
中是单调的,所以R抛出错误,表示找不到根(您正在寻找的N
的值) 。