%in%的运行不符合逻辑预期:
> 1 %in% list(1,NULL,3)
[1] TRUE
> NULL %in% list(1,NULL,3)
logical(0)
如果列表包含NULL元素,如何获得TRUE响应?
答案 0 :(得分:3)
您可以在is.null
中使用sapply
:
any(sapply(list(1,NULL,3), is.null))
#[1] TRUE
答案 1 :(得分:2)
您也可以将NULL包装在list()
中,这似乎很有效
> list(NULL) %in% list(1,3)
[1] FALSE
> list(NULL) %in% list(1,NULL,3)
[1] TRUE
> list(NULL) %in% list(Inf,-Inf,numeric(0),NA, NaN)
[1] FALSE
答案 2 :(得分:1)
您可以套用/套用列表以检查长度= 0
> sapply( list(1,NULL,3), function(x) length(x) == 0 )
[1] FALSE TRUE FALSE
然后您可以将其包装在any()
答案 3 :(得分:1)
使用Map的Base R:
pageIndex
使用mapply的Base R:
any(unlist(Map(is.null, lst)))
数据:
any(mapply(is.null, lst, SIMPLIFY = TRUE))