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
4

1 回答 1

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与 0.1 分位数进行比较,将 的第 4 个元素x与 0.2 分位数进行比较,依此类推. 知道了?:)

于 2013-03-08T16:23:53.840 回答