R中`quantile`函数的行为

4

在解决问题时,我注意到了一些有趣的东西。我不知道具体发生了什么,但是发生了一些我没有预料到的情况。可能是我犯了一个错误,但让我举个例子:

x <- rnorm( 100 )
y <- x[ x > quantile( x, 0.1 ) ]
z <- x[ x > quantile( x, c( 0.1, 0.2 ) ) ]
a <- x[ x > quantile( x, c( 0.1, 0.2, 0.3 ) ) ]

我们得到了三个不同的结果,但如何解释这些结果?这些是使用的限制吗?
更新: 我想我问错了问题。我们如何解释以下内容:
> x <- rnorm( 100 )
> length( x[ x > quantile( x, 0.1 ) ] )
[1] 90
> length( x[ x > quantile( x, 0.2 ) ] )
[1] 80
> length( x[ x > quantile( x, c( 0.1, 0.2 ) ) ] )
[1] 85

1
我的回答也是你编辑的解释。 - joran
1个回答

10

对于>和R的循环行为,您可能感到困惑。当quantile返回多个值时(如最后两个示例中),它会将这些向量重复使用,使它们的长度与x相同,以便通过>进行矢量化比较。

因此,在最后两个示例中,它重复来自quantile的2或3个值,直到生成的向量与x的长度相同,并使用>逐个元素地进行比较。

编辑

也许我的解释不够清楚。在编辑中的最后一行中,x > quantile(x,c(0.1,0.2))中,R将第一个元素与0.1分位数进行比较,第二个元素与0.2分位数进行比较,第三个元素与0.1分位数进行比较,第四个元素与0.2分位数进行比较,以此类推。明白了吗? :)


是的,你现在编辑的回答完全有意义。很好知道。谢谢。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接