从向量中有效地移除不同间隔中的值

时间:2014-10-30 17:08:08

标签: r

我遇到过这个问题,可以简单地描述如下:

v <- 1:10
beg <- c(2, 8)
end <- c(5, 9)

我想删除[2-5]和[8-9]值,这应该是:

d <- c(2, 3, 4, 5, 8, 9)

我的问题是如何使用dbeg有效地构建此类向量end

然后,

final <- v[!(v %in% d)]

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以使用seqMap组合。

unlist(Map(seq, beg, end))
# [1] 2 3 4 5 8 9

Map使用附加参数中的成对值调用其第一个参数(seq),因此上述内容与:

相同
unlist(lapply(seq_along(beg), function(i) seq(beg[i], end[i])))