簡體   English   中英

在R中,NA == NA嗎?

[英]in R does NA == NA?

identical(NA, NA)返回TRUE ,但是以下代碼從日期框架中過濾掉NA

library(tidyverse)
filter(starwars, birth_year == birth_year)

如果NA確實等於NA則上面的星際大戰篩選數據框應包含NA出生年份。 為什么不呢?

NA identical NA identical ,但不相等。 如果運行NA==NA ,則響應將為NA,因為equal操作符不適用於NA。 identical文檔中:

調用same是在if和while語句以及使用&&或||的邏輯表達式中測試完全相等的方法。 在所有這些應用程序中,都需要確保獲得單個邏輯值。

在這種情況下,用戶經常使用比較運算符,例如==或!=。 看起來很自然,但這不是這些運算符在R中設計的目的。它們返回的對象類似於參數。 如果您期望x和y的長度為1,但碰巧其中一個不是,則不會得到單個FALSE。 同樣,如果參數之一是NA,則結果也是NA。 無論哪種情況,表達式if(x == y)....都無法正常工作。

==的文檔中:

缺失值(NA)和NaN值甚至被認為是不可比的,因此涉及它們的比較將始終導致NA。 比較字符串並且在當前的整理語言環境中其中一個無效時,也會導致缺少值。

這樣做的理由是,從概念上講,缺失的價值觀彼此不同。 它們可能表示非常不同的值,但我們只是不知道這些值是什么。

在這種情況下的替代方法是添加| is.na(birth_year) | is.na(birth_year)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM