在处理问题时,我发现了一些有趣的东西。我不知道到底发生了什么,但有些事情发生了,我没想到会发生。我可能犯了一个错误,但让我先举一个例子:
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
答案 0 :(得分:10)
您对>
和R的回收行为感到困惑。当quantile
返回的值超过1时(如前两个示例所示),它会将这些向量重新处理为与x
相同的长度,以便通过>
进行向量化比较。
所以,在最后两个例子中,它一遍又一遍地重复quantile
中的2或3个值,直到得到的向量与x
的长度相同,并且它们在元素方面与它们进行比较。 >
。
修改强>
也许我的解释不够明确。在编辑的最后一行,x > quantile( x, c( 0.1, 0.2 ) )
R将x
的第一个元素与0.1分位数进行比较,将x
的第二个元素与0.2分位数进行比较,x
的第三个元素x
1}}具有0.1分位数,{{1}}的第4个元素具有0.2分位数,依此类推。得到它了? :)