перезаписать FALSE с помощью NA - PullRequest
2 голосов
/ 23 апреля 2019

Я хочу заменить значения FALSE на NA.Я уверен, что решение легко, но я не понимаю.Спасибо за вашу помощь!

abc<-c(1,2,5,6,7)
abcd<-c(1,2,5,6)
test<-abc %in% abcd
table(test)["FALSE"]

Решение должно выглядеть так:

abc <- c(1, 2, 5, 6, NA)

Ответы [ 3 ]

3 голосов
/ 23 апреля 2019
abc[match(abc, abcd)]
[1]  1  2  5  6 NA

%in% активно избегает этого поведения, полный код для %in%:

`%in%` <- function (x, table) {
    match(x, table, nomatch = 0L) > 0L
}

nomatch = 0L изменяет вывод NA на FALSE.Поведение по умолчанию match включает его.

2 голосов
/ 23 апреля 2019

Просто сделайте -

> abc[!(abc %in% abcd)] <- NA

Выход -

> abc
[1]  1  2  5  6 NA
0 голосов
/ 23 апреля 2019

Попробуйте базовые функции

   test[isFalse(test)] <- NA
...