2017-10-21 77 views
0

我有一个列表如下:提取物名称

mtlist = as.list(mtcars) 
mtlist[[2]] = NA 
mtlist[[5]] = NA 

什么是最简洁的方式来提取列表元素这是NA的名字吗?

我想出了下面的解决方案。但我想知道是否还有其他更好的选择。特别是all(is.na(x))似乎容易发生在我身上。

names(which(sapply(mtlist, function (x) all(is.na(x))))) 

回答

2

可以使用is.na()功能检查哪个列表的元素是NA和使用names()功能提取自己的名字。

names(mtlist)[is.na(mtlist)] 
# [1] "cyl" "drat" 
+1

如此明显,我没有想到这一点。 – andrasz

+1

发生!我们有时会想太多,解决方法非常简单。 –