考虑到 R 列表中的先前值,如何替换值?

How do I replace a value taking into account the previous value from a list in R?

我正在尝试用零值替换零之后的所有值。

列表是这样的:

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

我希望输出是这样的:

c(1,1,0,0,1,1,1,1,0,0,1)

所以,0之后的下一个值也是0。

我已经用循环完成了,但是因为它有大量的信息需要等待很多时间。 希望有人能给我出出主意。

x[ c(FALSE, x[-length(x)] == 0) ] <- 0
x
#  [1] 1 1 0 0 1 1 1 1 0 0 1
identical(
  x,
  c(1,1,0,0,1,1,1,1,0,0,1) # from the OP
)
# [1] TRUE

你可以这样做:

x[which(x == 0) + 1] <- 0

 [1] 1 1 0 0 1 1 1 1 0 0 1