在解决一个问题时,我注意到了一些有趣的事情。我不知道到底发生了什么,但发生了一些我没想到会发生的事情。我可能犯了一个错误,但让我从一个例子开始:
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发布于 2013-03-09 00:23:54
您对>和R的回收行为感到困惑。当quantile返回一个以上的值时(就像在最后两个示例中一样),它会回收那些长度与x相同的向量,以便通过>进行矢量化比较。
因此,在最后两个示例中,它一次又一次地重复quantile中的2或3个值,直到得到的向量与x的长度相同,并将它们与>进行逐个元素的比较。
编辑
也许我的解释不够清楚。在编辑的最后一行,x > quantile( x, c( 0.1, 0.2 ) ) R将x的第一个元素与0.1分位数进行比较,将x的第二个元素与0.2分位数进行比较,将x的第三个元素与0.1分位数进行比较,将x的第四个元素与0.2分位数进行比较,依此类推。明白了吗?:)
https://stackoverflow.com/questions/15298490
复制相似问题