2014-02-11 45 views
1

假設我有一個向量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一些funkiness?

回答

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 

我不知道這是否在「訴諸一些funkiness」與否,雖然下降。

+0

謝謝,這幾乎是我在找的東西。我在下面發佈了自己的解決方案,但看起來你更快。 – user1518829

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=falsecut,改變行爲。