如果NA出现在矢量中,则使所有后续元素为NA

问题描述 投票:0回答:2

一旦初始NA出现在矢量中,我想用NA替换该矢量中的所有后续值。

例如,如果x = c(0, 0, NA, 0, 0, 1, 2)

我渴望:x = c(0, 0, NA, NA, NA, NA, NA)

这该怎么做?

r na
2个回答
1
投票

能做:

x <- ifelse(cumsum(is.na(x)) > 0, NA, x)

或更快:

x[cumsum(is.na(x)) > 0] <- NA

输出:

[1]  0  0 NA NA NA NA NA

0
投票
v <- c(0,0, NA, 0, 0, 1, 2)
v[ as.logical(cummax(is.na(v))) ] <- NA
v
# [1]  0  0 NA NA NA NA NA

人们也可以使用

v[ dplyr::cumany(is.na(v)) ] <- NA
© www.soinside.com 2019 - 2024. All rights reserved.