这是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的答案,我就是傻瓜!)
答案 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