如何获取R数据框指定列中所有NA值对应的行号?
R语言获取数据框中NA值对应行号的简便方法
核心实现无需调整grepl参数,直接用R原生内置的缺失值判断函数即可,操作非常简单:
which(is.na(df$first_column))
运行上述代码会直接返回你需要的结果:3
方法说明
is.na()是R专门用来识别缺失值NA的函数,传入列向量后会返回等长的逻辑向量,元素为NA的对应位置返回TRUE,其余位置返回FALSEwhich()函数会提取逻辑向量中为TRUE的位置索引,对应数据框的行号,写法简洁效率也更高
如果有同时匹配普通值和NA的需求,比如要找值为2或者为NA的行,可直接组合判断条件:
which(df$first_column == 2 | is.na(df$first_column))
返回结果为2 3
补充说明
你之前用grepl无法匹配NA的原因是:grepl处理输入为NA的元素时,返回值也是NA而非逻辑值,which()会自动忽略逻辑向量中的NA值,所以无法匹配到NA对应的行,针对NA的匹配直接用is.na()是最优方案。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

