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

10-10 11:55