如何在R语言中基于NA条件替换mtcars数据集的变量值?
解决R中判断NA并赋值的问题
你代码里的问题在于,在R中不能用== NA来判断缺失值——因为任何与NA的比较运算(包括NA == NA)都会返回NA,而NA作为索引时不会被识别为有效条件,所以你的赋值操作完全不会生效。
正确的做法是使用R内置的is.na()函数来检测缺失值,修改后的代码如下:
summary(mtcars) mtcars$new <- NA # 用is.na()判断gear是否为NA mtcars$new[is.na(mtcars$gear)] <- 1 print(mtcars$new)
补充说明:
is.na(x)会返回一个和x长度相同的逻辑向量,对应位置为TRUE表示该位置是NA,FALSE表示不是。- 额外提一句:mtcars数据集里的
gear变量本身没有缺失值,所以运行上述代码后new列会全是NA,但如果你的实际数据中gear存在缺失值,这段代码就能正确给对应位置的new赋值为1。
内容的提问来源于stack exchange,提问作者four77
相关产品推荐
相关产品推荐

