假设我有一个向量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
来解决某些问题?
答案 0 :(得分:3)
您可以使用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
我不知道这是否属于“诉诸某种困难”或不是。
答案 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
,以更改行为。