Как только начальный NA появляется в векторе, я хотел бы заменить все последующие значения в этом векторе на NA.
Например, если x = c(0, 0, NA, 0, 0, 1, 2)
x = c(0, 0, NA, 0, 0, 1, 2)
Я хочу: x = c(0, 0, NA, NA, NA, NA, NA)
x = c(0, 0, NA, NA, NA, NA, NA)
Как это сделать?
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
Может сделать:
x <- ifelse(cumsum(is.na(x)) > 0, NA, x)
или быстрее:
x[cumsum(is.na(x)) > 0] <- NA
Выход:
[1] 0 0 NA NA NA NA NA