在R中查找最长连续数字

3

你好,我有一个数字列表,类似于c(1,2,10,41,42,43,50)。最长连续序列的长度为3,起始数字为41。但是如何在R语言中实现呢?非常感谢!


rle(diff(x)==1):计算向量x中连续递增的元素序列的长度。 - Ben Bolker
这不是重复的问题,而是 一个用于连续整数的 RLE 类似函数 的子集问题。 - Gregor Thomas
2个回答

10

这里有一个可能的解决方案。

v <- c(1,2,10,41,42,43,50) # Your data
temp <- cumsum(c(1, diff(v) - 1))
temp2 <- rle(temp)
v[which(temp == with(temp2, values[which.max(lengths)]))]
# [1] 41 42 43

6

一种方法是将向量拆分成其序列,然后取列表中最长的元素。

x <- c(1, 2, 10, 41, 42, 43, 50)
s <- split(x, cumsum(c(TRUE, diff(x) != 1)))
s[[which.max(lengths(s))]]
# [1] 41 42 43

请注意,如果存在平局,则返回第一个最长的集合。

我删除了我的答案,支持这个答案。不过,这个链接可能作为补充有用:https://stat.ethz.ch/pipermail/r-help/2007-December/149006.html - Hack-R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接