识别R中的运行
在R中有以下向量:识别R中的运行,r,run-length-encoding,R,Run Length Encoding,在R中有以下向量: incident <- c(FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE) 但这并没有让我得到所需的向量。 有什么建议吗?谢谢大家! 对于不带NAs的逻辑向量,使用rle中的长度重复1:5,并将其除以2,然后使用天花 x <- rle(incident)$lengths n <- rep(1:length(x), x) # [1] 1 2 2 2 3 3 3 4
incident <- c(FALSE, TRUE, TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE)
但这并没有让我得到所需的向量。
有什么建议吗?谢谢大家! 对于不带NAs的逻辑向量,使用
rle
中的长度重复1:5,并将其除以2,然后使用天花
x <- rle(incident)$lengths
n <- rep(1:length(x), x)
# [1] 1 2 2 2 3 3 3 4 4 5 5
n1 <- ceiling( n/2 )
# [1] 1 1 1 1 2 2 2 2 2 3 3
paste0(incident, n1 )
[1] "FALSE1" "TRUE1" "TRUE1" "TRUE1" "FALSE2" "FALSE2" "FALSE2" "TRUE2" "TRUE2" "FALSE3"
[11] "FALSE3"
x您可以将您的rle
与ave
组合起来计算组数
r <- rle(incident)
r$values <- paste0(r$values,ave(r$values,r$values,FUN=seq))
as.factor(inverse.rle(r))
# [1] FALSE1 TRUE1 TRUE1 TRUE1 FALSE2 FALSE2 FALSE2 TRUE2 TRUE2 FALSE3
# [11] FALSE3
r我显然误解了这个问题,删除了上面的评论。
x <- rle(incident)$lengths
n <- rep(1:length(x), x)
# [1] 1 2 2 2 3 3 3 4 4 5 5
n1 <- ceiling( n/2 )
# [1] 1 1 1 1 2 2 2 2 2 3 3
paste0(incident, n1 )
[1] "FALSE1" "TRUE1" "TRUE1" "TRUE1" "FALSE2" "FALSE2" "FALSE2" "TRUE2" "TRUE2" "FALSE3"
[11] "FALSE3"
r <- rle(incident)
r$values <- paste0(r$values,ave(r$values,r$values,FUN=seq))
as.factor(inverse.rle(r))
# [1] FALSE1 TRUE1 TRUE1 TRUE1 FALSE2 FALSE2 FALSE2 TRUE2 TRUE2 FALSE3
# [11] FALSE3