R中na.omit未按预期移除NA?求排查问题原因
为什么
na.omit()返回带额外属性的结果? na.omit()的设计逻辑就是如此——它除了移除向量里的NA值,还会自动添加na.action属性,记录被删掉的元素在原向量中的位置。这个特性在处理数据框这类结构化数据时很实用,能帮你追溯哪些行被移除了。你看到的带属性的输出是这个函数的默认行为,不是R版本或操作失误导致的问题。
你用b <- a[!(is.na(a))]的方式是直接通过索引筛选非NA元素,不会保留任何额外属性,所以输出就是纯净的数值向量。
如果想通过na.omit()得到不带属性的纯向量,可以用as.vector()把结果转成普通向量:
a <- c(1,2,NA,3,4,NA,5,6) b <- as.vector(na.omit(a)) b
输出就会是你预期的:
[1] 1 2 3 4 5 6
内容的提问来源于stack exchange,提问作者RandomYellow
相关产品推荐
相关产品推荐

