假設我有一個向量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沒有訴諸factor
或apply
一些funkiness?
假設我有一個向量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沒有訴諸factor
或apply
一些funkiness?
您可以使用findInterval
和split
:
> 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」與否,雖然下降。
我發現這樣做的這樣:
> 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
,改變行爲。
謝謝,這幾乎是我在找的東西。我在下面發佈了自己的解決方案,但看起來你更快。 – user1518829