2014-10-29 2 views
3

안녕하세요, 저는이 번호와 같은 번호 목록을 가지고 있습니다 (1,2,1041424350). 가장 긴 연속 줄의 길이는 3이고 41에서 시작합니다. 그러나 R에서 어떻게 구현할 수 있습니까? 많은 감사합니다!가장 긴 연속 번호 찾기 R

+0

은'rle (diff (x) == 1)'로 시작합니다. –

+0

이것은 중복되지 않지만 [연속 된 정수에 대한 RLE와 같은 함수]에 대한 질문의 하위 집합입니다 (http : // stackoverflow .com/q/8466807/903061). – Gregor

답변

7

여기

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 
5

한 가지 방법은 다음 목록의 가장 긴 요소를 가지고 그 순서에 벡터를 분할하는 하나 개의 가능한 솔루션입니다.

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

동점의 경우 첫 번째로 긴 세트가 반환됩니다.

+0

답변을 삭제했습니다. 이 링크는 추가로 유용 할 수도 있습니다 : https://stat.ethz.ch/pipermail/r-help/2007-December/149006.html –

관련 문제