将数字向量拆分为有界子集

时间:2014-02-11 05:08:04

标签: r

假设我有一个向量c(1,2,3,4,5,6,7,8,9,10),我希望将其拆分为由另一个向量c(4, 6, 11)限定的子集。

我希望结果为三个向量[1,2,3][4,5][6,7,8,9,10]。 (或[1,2,3,4]等......我不挑剔。)

是否有一种简单的方法可以在R中执行此操作,而无需使用factorapply来解决某些问题?

2 个答案:

答案 0 :(得分:3)

您可以使用findIntervalsplit

> x <- c(1,2,3,4,5,6,7,8,9,10)
> split(x, findInterval(x, c(4, 6, 11)))
$`0`
[1] 1 2 3

$`1`
[1] 4 5

$`2`
[1]  6  7  8  9 10

我不知道这是否属于“诉诸某种困难”或不是。

答案 1 :(得分:0)

我找到了这种方式:

> x <- c(1:10)
> bounds <- c( 3, 7, 12)
> f <- cut(x, c(0, bounds))
> split(x, f)
$`(0,3]`
[1] 1 2 3

$`(3,7]`
[1] 4 5 6 7

$`(7,12]`
[1]  8  9 10

但阿南达更清洁。

但是,我认为这允许您在right=false中指定cut,以更改行为。