0
NA比較語義當我R中使用==
這會產生NA
%,R中
> 1==NA
[1] NA
但是比較了多種以NA
,如果我用%in%
> 1 %in% c(NA)
[1] FALSE
什麼去這裏? %in%
是不是在幕後使用==
?
NA比較語義當我R中使用==
這會產生NA
%,R中
> 1==NA
[1] NA
但是比較了多種以NA
,如果我用%in%
> 1 %in% c(NA)
[1] FALSE
什麼去這裏? %in%
是不是在幕後使用==
?
關於比較操作==
,它處理NA
如下:
缺失值(NA)和NaN值被認爲是不可比較的,甚至自己解決,所以他們參與的比較總是會導致NA。當字符串進行比較時,也會導致缺少值,而在當前整理語言環境中則有一個值無效。 (見
?`==`
)
而且從?`%in%`
我們學習:
究竟是什麼比賽什麼是在一定程度上定義的問題。對於所有類型,NA與NA匹配並且沒有其他值。對於實數和複數值,NaN值被視爲與任何其他NaN值匹配,但不匹配NA。
那%中永遠不會返回NA使它在if條件下特別有用。
發生這種情況,因爲(如@akrun也在評論中指出)
%in%
是目前被定義爲"%in%" <- function(x, table) match(x, table, nomatch = 0) > 0
如果檢查功能 ,它是做'比賽即'匹配(x,表,不匹配= 0L)> 0L' – akrun