【发布时间】:2019-01-16 09:34:36
【问题描述】:
我有一个来自向量的 rle 对象,并希望在最大长度(值 == TRUE)之前和之后获取长度总和(值 == TRUE 和值 == FALSE)
我能做到的:
se <- c(3,1,2,3,1,2,3,4,5,6,5,8,9,9,9,5,4,3,4,5,4,3,2)
obj <- rle(se > 4)
obj
Run Length Encoding
lengths: int [1:5] 8 8 3 1 3
values : logi [1:5] FALSE TRUE FALSE TRUE FALSE
#Getting the maximum with values == True
with(obj, max(lengths[values]))
8
但是现在我不确定如何继续,.. 如果我尝试通过 match() 找到最大值 8,我会首先找到值 == FALSE 的元素,我不能相信没有其他长度= 8 值 == FALSE 在我试图寻找的最大值的右边。
对于所示示例,预期结果将是:
Sum1 = 8
Sum2 = 7
非常感谢您的帮助, 亚瑟尔
【问题讨论】:
-
我不确定我能不能完全跟随你。
Sum1是否等于第一个8和Sum2等于来自您的3 + 1 + 3的objlenghts? -
没错。我用
with(obj, max(lengths[values]))找到的最大值是obj 的第二个元素。所以左边只有另一个 8 是 Sum1,右边是 3 + 1+ 3 给出 7 作为 Sum2