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