考虑到 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
我正在尝试用零值替换零之后的所有值。
列表是这样的:
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