4

这是一个重复的问题除了 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 循环方法非常慢。

(抱歉,如果我可以轻松地重新解释 Python 的答案,我很愚蠢!)

4

1 回答 1

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
于 2013-05-01T19:44:58.500 回答