如何在R中找到最长的相同数字
例如,我有这样的数据如何在R中找到最长的相同数字,r,R,例如,我有这样的数据 x<-c(0,0,1,1,1,1,0,0,1,1,0,1,1,1) x以下是一种使用“cgwtools”包中的sekle的方法: 用途如下: x <- c(0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1) longSeq(x) # [1] 3 6 longSeq(x, range = FALSE) # [1] 3 4 5 6 x您也可以通过使用rle和reverse.rle组合使用base R轻松实现这一点 创建函数 lon
x<-c(0,0,1,1,1,1,0,0,1,1,0,1,1,1)
x以下是一种使用“cgwtools”包中的sekle
的方法:
用途如下:
x <- c(0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1)
longSeq(x)
# [1] 3 6
longSeq(x, range = FALSE)
# [1] 3 4 5 6
x您也可以通过使用rle
和reverse.rle
组合使用base R轻松实现这一点
创建函数
longSeq2 <- function(x, range = TRUE){
temp <- rle(x == 1)
temp$values <- temp$lengths == max(temp$lengths[temp$values == TRUE])
temp <- which(inverse.rle(temp))
if (isTRUE(range)) range(temp) else temp
}
lonseq2
x <- c(0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1)
longSeq(x)
# [1] 3 6
longSeq(x, range = FALSE)
# [1] 3 4 5 6
y <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1)
longSeq(y)
# [1] 9 11
longSeq2 <- function(x, range = TRUE){
temp <- rle(x == 1)
temp$values <- temp$lengths == max(temp$lengths[temp$values == TRUE])
temp <- which(inverse.rle(temp))
if (isTRUE(range)) range(temp) else temp
}
x <- c(0,0,1,1,1,1,0,0,0,0,0,0,0,1,1,0,1,1,1)
longSeq2(x)
## [1] 3 6
longSeq2(x, range = FALSE)
## [1] 3 4 5 6
y <- c(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1)
longSeq2(y)
## [1] 9 11
longSeq2(y, range = FALSE)
## [1] 9 10 11