R中"分位数"函数的行为

Sam*_*Sam 4 r quantile

在处理问题时,我发现了一些有趣的东西.我不知道到底发生了什么,但有些事情发生了,我没想到会发生.我可能犯了一个错误,但让我先举一个例子:

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 ) ) ]
Run Code Online (Sandbox Code Playgroud)

我们得到三个不同的结果,但是如何解释这些结果.这些是使用的限制吗?

更新:我想我问的是错误的问题.我们如何解释以下内容:

> 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
Run Code Online (Sandbox Code Playgroud)

jor*_*ran 10

你对>R和回收行为感到困惑.当quantile返回多于1个值时(如前两个示例中所示),它将这些向量再循环到x与进行矢量化比较的长度相同的长度>.

因此,在最后两个例子中,它反复重复2或3个值,quantile直到得到的向量x与它们的长度相同,并且它们在元素方面与它们进行比较>.

编辑

也许我的解释不够明确.在你编辑的最后一行,x > quantile( x, c( 0.1, 0.2 ) )R比较第一个元素x与0.1分位数,第二个元素x与0.2分位数,第三个元素x与0.1分位数,第四个元素x与0.2分位数,依此类推.得到它了?:)