在列表中查找连续数字组

时间:2013-05-01 19:22:14

标签: r list range contiguous

这是this的重复问题,除了R而不是Python。

我想在列表中标识连续的组(有些人称它们是连续的)整数,其中重复的条目被视为在同一范围内存在。因此:

myfunc(c(2, 3, 4, 4, 5, 12, 13, 14, 15, 16, 17, 17, 20))

返回:

min  max
2    5
12   17
20   20

虽然任何输出格式都没问题。我目前的暴力,for-loop方法非常慢。

(道歉,如果我能轻易地重新解释Python的答案,我就是傻瓜!)

1 个答案:

答案 0 :(得分:7)

只需使用diff

x = c(2, 3, 4, 4, 5, 12, 13, 14, 15, 16, 17, 17, 20)

start = c(1, which(diff(x) != 1 & diff(x) != 0) + 1)
end = c(start - 1, length(x))

x[start]
# 2 12 20
x[end]
# 5 17 20