> 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中的错误:一元运算符的无效参数
答案 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)
给出了一个向量。这就是为什么当你在它前面添加负号时,你得到你想要的输出。