R中的%in%
中缀似乎与表达式两侧的NA
值向量一样工作(如下例所示).我想问一问,这种行为是否有明确的定义,以及使用这种表达方式是否有重大警告?
c(0, NA) %in% c(1, 2, 3, NA)
R中的%in%
中缀似乎与表达式两侧的NA
值向量一样工作(如下例所示).我想问一问,这种行为是否有明确的定义,以及使用这种表达方式是否有重大警告?
c(0, NA) %in% c(1, 2, 3, NA)
如果你看一下%in%
的源代码,你会发现它是通过match
实现的:
`%in%`
#> function (x, table)
#> match(x, table, nomatch = 0L) > 0L
如果你查看match
的文档,你会看到:
对于所有类型,
NA
与NA
匹配,没有其他值
因此,对您的问题的回答是"是的,它定义得很好,并且有文档记录".它的使用需要注意的是,NA值有时是无法获取和意外的.如果你想匹配NA
,一个更传统的习语应该是is.na(x)
或any(is.na(x))