3
> 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
中的错误:一元运算符的参数无效

4

2 回答 2

5

Compose对这样的事情有好处:

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

-请注意,此处需要反引号。

于 2013-03-24T01:06:59.017 回答
2

问题的原因与实际上是两个功能-qnorm(.)的组合有关。首先你计算然后你拿。qnorm(.)negative

sapply期待一个单一的功能。

当您sapply( <..>, -qnorm) R尝试计算“减去函数 qnorm”时,这对函数没有意义。
(只需键入-qnorm,您将得到相同的错误。)

-qnorm(k)起作用的原因是因为R计算qnorm(k)得到一个数字,然后取该数字的负数。

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

于 2013-03-24T02:53:12.847 回答