r - 从 R 中许多 0 和少数 1 的序列中仅选择 0 和第一个 1?

标签 r sequence

我以这种方式有一个 0 和 1 的序列:

xx <- c(0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 
                    0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1)

我想选择 0 和第一个 1。

结果应该是:
ans <- c(0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1)

最快的方法是什么?在 R

最佳答案

使用 rle()提取运行长度和值,做一些小手术,然后使用 inverse.rle() 将运行长度编码的向量“重新组合在一起”。 .

rr <- rle(xx)
rr$lengths[rr$values==1] <- 1
inverse.rle(rr)
#  [1] 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1

关于r - 从 R 中许多 0 和少数 1 的序列中仅选择 0 和第一个 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18920849/

相关文章:

R:为什么我不能删除数据框中带有 NA 元素的行?

R 版的 scatter3(matlab)

perl - 如何有效地创建连续数字的 perl 哈希?

c++ - 如何计算 C++ 中最长的永久序列(增加或减少)?

sql - oracle sql中填写序号

r - 在不切断图形或丢失数据的情况下更改 ggplot 中的 y 轴限制

r - 使用管道运算符 "%>%"using::in R

r - R中方程组的求解

java - Hibernate 序列 nextVal 已解析但未使用 (Oracle)

python - 透明地将数字类型处理为单值序列(反之亦然)