Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么可以';萨普利的t-qnorm?_R - Fatal编程技术网

为什么可以';萨普利的t-qnorm?

为什么可以';萨普利的t-qnorm?,r,R,但是下面的代码不能运行,为什么-qnorm不能在sapply中运行 sapply(c(0.05,0.01),-qnorm) -qnorm中出错:一元运算符的参数无效 Compose适用于以下情况: > 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 请注意,此处需要使用-的反引号。问题的原因与-q

但是下面的代码不能运行,为什么
-qnorm
不能在sapply中运行

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


Compose
适用于以下情况:

> 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(.)
实际上是两个函数的组合有关。首先计算
qnorm(.)
,然后取
负值

sapply
需要一个单一功能

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

之所以
-qnorm(k)
有效,是因为
R
正在计算
qnorm(k)
得到一个数字,然后取该数字的负数


类似地,
sapply(,qnorm)
给出了一个向量。这就是为什么当你在它前面加上负号时,你会得到你想要的输出

因为
-qnorm
不是函数或函数名。
-
在此上下文中是一元前缀函数,
qnorm
是函数,但该上下文中的
-qnorm
不会导致解释器解析为
函数(x){-(qnorm(x))}
这会成功的。萨普利调用
match.function
,传递“-qnorm”作为搜索参数,正如马吕斯所说的
-qnorm
不是一个函数名,所以它找不到它。他几乎把这个精确的代码作为问题的第二个命令。。。当然,这个解释是正确的。我想这已经包含在问题的评论中了……但我完全忽略了这一点。哎呀!(答案经过编辑以反映)我不熟悉
功能性
,撰写似乎非常实用。然而,在这种情况下,似乎有点矫枉过正;)这似乎有些过分,但(至少对我来说)它会产生一个更可读的表达式。感谢您指出这一点。另外,请查看
Reduce
,它是
撰写
的基础。同样有用,但适用于不同的问题。
require(functional)
sapply(c(0.05,0.01), Compose(qnorm, `-`))
[1] 1.644854 2.326348