找到R中最长的连续数字

时间:2014-10-29 19:37:30

标签: r

嗨我有一个像这样的数字列表c(1,2,10,41,42,43,50)。最长连续条纹的长度为3,它从41开始。但是如何在R中实现它?非常感谢!

2 个答案:

答案 0 :(得分:8)

这是一种可能的解决方案

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

答案 1 :(得分: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

请注意,在平局的情况下,将返回第一个最长的集合。