在R中拆分数字向量

时间:2014-07-28 08:01:19

标签: r

如果我有一个向量,c(1,2,3,5,7,9,10,12)......和另一个向量c(3,7,10),我将如何产生以下内容: / p>

[[1]]
1,2,3

[[2]]
5,7

[[3]]
9,10

[[4]]
12

注意3 7和10如何成为每个列表元素的最后一个数字(最后一个除外)。或者在某种意义上说是“断点”。我确信有一个简单的R函数,我无法知道或丢失了内存。

3 个答案:

答案 0 :(得分:2)

以下是使用cutsplit的一种方式:

split(x, cut(x, c(-Inf, y, Inf)))
#$`(-Inf,3]`
#[1] 1 2 3
#
#$`(3,7]`
#[1] 5 7
#
#$`(7,10]`
#[1]  9 10
#
#$`(10, Inf]`
#[1] 12

答案 1 :(得分:1)

可以做

split(x, cut(x, unique(c(y, range(x)))))

## $`[1,3]`
## [1] 1 2 3

## $`(3,7]`
## [1] 5 7

## $`(7,10]`
## [1]  9 10

## $`(10,12]`
## [1] 12

答案 2 :(得分:0)

与@beginneR的答案类似,但使用findInterval代替cut

split(x, findInterval(x, y + 1))
# $`0`
# [1] 1 2 3
# 
# $`1`
# [1] 5 7
# 
# $`2`
# [1]  9 10
# 
# $`3`
# [1] 12