Если NA появляется в векторе, сделать все последующие элементы NA - PullRequest
0 голосов
/ 17 февраля 2019

Как только начальный NA появляется в векторе, я хотел бы заменить все последующие значения в этом векторе на NA.

Например, если x = c(0, 0, NA, 0, 0, 1, 2)

Я хочу: x = c(0, 0, NA, NA, NA, NA, NA)

Как это сделать?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019
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
0 голосов
/ 17 февраля 2019

Может сделать:

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

или быстрее:

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

Выход:

[1]  0  0 NA NA NA NA NA
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...