【问题标题】:lapply and passing argumentslapply 和传递参数
【发布时间】:2014-03-03 14:26:56
【问题描述】:

我正在尝试学习如何在 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

我正在尝试从pwr.t.test 中取出n 因素,并将这些因素中的每一个作为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.000000 和 NaN 时会很好吗?
  • 你是对的!它讨厌那些输入...看起来它只想要非零数字。

标签: r lapply


【解决方案1】:

简答:需要的主题数大于 R 将检查的最大值。添加一些检查,这样你就不会在d == 0时运行该函数,它会起作用。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多