当右侧为向量时,%in%
可用于检查NA
:
> NA %in% c(NA, 2)
[1] TRUE
> NA %in% c(1, 2)
[1] FALSE
> 1 %in% c(NA, 2)
[1] FALSE
> 1 %in% c(1, 2)
[1] TRUE
当右侧是列表时,%in%
的行为有所不同:
> NA %in% list(NA, 2)
[1] FALSE
> NA %in% list(1, 2)
[1] FALSE
> 1 %in% list(NA, 2)
[1] FALSE
> 1 %in% list(1, 2)
[1] TRUE
这是错误还是功能?文档中对此有描述吗?
答案 0 :(得分:2)
我们可以使用anyNA
anyNA(list(NA, 2))
如果list
的{{1}}长度大于1,则使用vector
recursive = TRUE
答案 1 :(得分:1)
要回答我的第二个问题:是的,这种现象在文档中进行了描述(当然):
因子,原始向量和列表被转换为字符向量[...]
因此,list(NA, 2)
被强制为c("NA", "2")
。显然,NA
不在c("NA", "2")
中。因此,应使用anyNA
。
我的个人带回家的信息:当右侧包含列表时,请尽量避免使用%in%
。