我有一个数据集,其中一列包含yes
、no
和的条目NA
。我想用 替换任何NA
,1
并用 替换任何非NA
条目0
。Ifelse
将非NA
条目替换为0
,但不将NA
条目替换为1
。我需要为此使用is.na()
命令。为什么在不is.na()
工作的地方工作ifelse
?
我在下面定义了一个可重现的示例,该示例从定义为因子的列开始,因为这就是我获取数据的方式。
q <-as.factor(c(NA, "yes", "no", "yes", NA))
## Does not work
q <- ifelse(q == "NA", 1, 0)
q
### Returns: [1] NA 0 0 0 NA
## Does not work
q[q == "NA"] <- 1
q
### Returns: [1] NA 0 0 0 NA
## This works
q[is.na(q)] <- 1
q
### Returns: [1] 1 0 0 0 1
存在其他一些条目,但它们似乎没有这个精确的问题。
https://stackoverflow.com/a/8166616/1364839 - 这个答案表明is.na()
有效,但不是为什么ifelse
失败。