Почему R не может найти «NA» при сравнении двух наборов данных с помощью «which ()» - PullRequest
0 голосов
/ 16 января 2019

У меня есть два набора данных, и я хочу знать, в каком месте их элементы отличаются, поэтому я использую код ниже:

В этом примере a1 и a2 - это сравниваемые наборы данных. «A2» имеет два разных элемента: один - [3,1], другой - [8,2], что означает «NA».

a1 <- data.frame(num = 1:8, lib = letters[1:8])
a2 <- a1
a2[[3,1]] <- 2
a2[[8,2]] <- 2
a1; a2
which(a1 != a2, arr.ind = TRUE)

Однако функция which () находит только одно различие "[3,1]". Кажется, что он не может найти разницу "NA". Как я могу найти различия [3,1] и [8,2]?

1 Ответ

0 голосов
/ 16 января 2019

Это потому, что когда что-либо по сравнению с NA равно NA, оно не возвращает TRUE или FALSE, следовательно, оно не фиксируется в which

"h" != NA
#[1] NA

Может потребоваться дополнительная проверка для NA элементов

which((a1 != a2) | (is.na(a1) != is.na(a2)), arr.ind = TRUE) 

#     row col
#[1,]   3   1
#[2,]   8   2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...