为什么不能-qnorm in sapply?

时间:2013-03-24 00:56:19

标签: r

> sapply(c(0.05,0.01),function(k){-qnorm(k)})
[1] 1.644854 2.326348
> -sapply(c(0.05,0.01),qnorm)
[1] 1.644854 2.326348

但是以下内容无法运行,为什么-qnorm无法在sapply中运行?

  

sapply(C(0.05,0.01), - qnorm)
      -qnorm中的错误:一元运算符的无效参数

2 个答案:

答案 0 :(得分:5)

Compose对这些事情有好处:

require(functional)
sapply(c(0.05,0.01), Compose(qnorm, `-`))
[1] 1.644854 2.326348

请注意,此处需要-附近的引号。

答案 1 :(得分:2)

问题的原因与-qnorm(.)实际上是两个函数的组合这一事实有关。首先计算qnorm(.),然后选择negative

sapply期待功能。

使用sapply( <..>, -qnorm)R正在尝试计算“减去函数qnorm”,这对函数没有意义。
(只需输入-qnorm,您就会收到同样的错误。)

-qnorm(k)有效的原因是因为R正在计算qnorm(k)以获取数字,然后取消该数字的负数。

同样,sapply(<..>, qnorm)给出了一个向量。这就是为什么当你在它前面添加负号时,你得到你想要的输出。