【问题标题】:Finding groups of contiguous numbers in a list [duplicate]在列表中查找连续数字组[重复]
【发布时间】:2013-04-25 20:23:03
【问题描述】:

这是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 的答案,我很愚蠢!)

【问题讨论】:

  • 我在搜索的时候没有找到那个问题!谢谢。我试图弄清楚如何以上面要求的格式格式化其他答案的输出。如果我能从其他答案中弄清楚,我会结束这个问题。谢谢。

标签: r list range contiguous


【解决方案1】:

只需使用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

【讨论】:

  • 这非常接近!在最初的问题中忘记正确描述我的问题:如果函数将重复的整数视为存在于同一范围内,那就太好了。现在编辑问题以反映这一点。谢谢。
  • @canary_in_the_data_mine 这很容易解决 - 请参阅编辑
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-16
  • 2016-08-24
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 2017-06-02
  • 2014-09-14
相关资源
最近更新 更多