我以这种方式有一个 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/