> 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
中的错误:一元运算符的参数无效
> 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
中的错误:一元运算符的参数无效
Compose
对这样的事情有好处:
require(functional)
sapply(c(0.05,0.01), Compose(qnorm, `-`))
[1] 1.644854 2.326348
-
请注意,此处需要反引号。
问题的原因与实际上是两个功能-qnorm(.)
的组合有关。首先你计算然后你拿。qnorm(.)
negative
sapply
期待一个单一的功能。
当您sapply( <..>, -qnorm)
R
尝试计算“减去函数 qnorm”时,这对函数没有意义。
(只需键入-qnorm
,您将得到相同的错误。)
-qnorm(k)
起作用的原因是因为R
计算qnorm(k)
得到一个数字,然后取该数字的负数。
同样, sapply(<..>, qnorm)
给出一个向量。这就是为什么当你在它前面添加负号时,你会得到你想要的输出。