la la和传递论点

时间:2014-03-03 14:26:57

标签: r lapply

我正在努力学习如何在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

有关正确方法的任何想法吗?

1 个答案:

答案 0 :(得分:0)

简答:所需的科目数量大于R检查的最大数量。添加一些检查,以便在d == 0时不运行该功能,它将起作用。

d = 0时,您需要无数个主题来检测差异。您看到的错误是因为R尝试以数字方式计算功率。算法R使用首先检查N的可能值(约21e+07)的区间界限。因为幂的函数在区间的两个端点处具有相同的符号并且在N中是单调的,所以R抛出错误,表示找不到根(您正在寻找的N的值) 。