2

我在 R 中有两个长度不同的向量,我可以组合这两个向量。我想找到属于每个区间的向量值:

x = c(1, 2, 3.5, 4, 6, 7.5, 8, 9, 10, 11.5, 12) 
y = c(2.5, 6.5) 

w = sort(c(x, y))

我想找到小于 2.5 的向量值 x 和向量值 x 属于区间 (2.5, 6.5) 和向量值 x 大于 6.5?

实际上,向量 y 的值在我的算法的每次迭代中都会发生变化,例如,我可能有长度为 4 的向量 y,那么如何在每次迭代中找到向量值属于每个区间?

4

2 回答 2

5

尝试:

> split(x, findInterval(x, y))
$`0`
[1] 1 2

$`1`
[1] 3.5 4.0 6.0

$`2`
[1]  7.5  8.0  9.0 10.0 11.5 12.0

这是我们改变时会发生的事情y

> y = c(2.5, 6.5, 10.5)
> split(x, findInterval(x, y))
$`0`
[1] 1 2

$`1`
[1] 3.5 4.0 6.0

$`2`
[1]  7.5  8.0  9.0 10.0

$`3`
[1] 11.5 12.0
于 2012-04-29T06:27:47.247 回答
2

使用函数cut()将向量划分为区间:

cut(x, breaks=c(-Inf, y, Inf))

 [1] (-Inf,2.5] (-Inf,2.5] (2.5,6.5]  (2.5,6.5]  (2.5,6.5]  (6.5, Inf] (6.5, Inf] (6.5, Inf] (6.5, Inf] (6.5, Inf] (6.5, Inf]
Levels: (-Inf,2.5] (2.5,6.5] (6.5, Inf]
于 2012-04-29T10:41:56.843 回答