【发布时间】:2022-08-22 05:40:17
【问题描述】:
rle() 函数返回一个包含值和长度的列表。我还没有找到一种方法来对输出进行子集化以隔离特定值的条纹,该值不涉及两次调用rle(),或将输出保存到稍后子集的对象中(添加步骤)。
例如,对于一系列公平抛硬币中的正面(1's):
s <- sample(c(0,1),100,T)
rle(s)
Run Length Encoding
lengths: int [1:55] 1 2 1 2 1 2 1 2 2 1 ...
values : num [1:55] 0 1 0 1 0 1 0 1 0 1 ...
# Double-call:
rle(s)[[1]][rle(s)[[2]]==1]
[1] 2 2 2 2 1 1 1 1 6 1 1 1 2 2 1 1 2 2 2 2 2 3 1 1 4 1 2
# Adding an intermediate step:
> r <- rle(s)
> r$lengths[r$values==1]
[1] 2 2 2 2 1 1 1 1 6 1 1 1 2 2 1 1 2 2 2 2 2 3 1 1 4 1 2
我看到仅针对1 获取条纹长度的一种非常简单的方法是简单地调整rle() 代码(答案),但可能还有一种更简单的方法。
标签: r