用“== NA”替换ifelse中的is.na()

时间:2018-02-16 10:24:27

标签: r compare na

exam$math <- ifelse(is.na(exam$math), 55, exam$math)

我想改变这个如下:

exam$math <- ifelse(exam$math == NA, 55, exam$math)

似乎数学上的所有数值都改为NA !!大声笑 我认为=用于分配,==用于比较。 我无法理解上面的错误。请帮忙!

2 个答案:

答案 0 :(得分:0)

你不需要ifelse。您可以使用is.na()进行子集化进行向量化:

exam <- data.frame(math = c(1,1,2,3,NA,NA))

exam$math[is.na(exam$math)] <- 55
exam

#   math
# 1    1
# 2    1
# 3    2
# 4    3
# 5   55
# 6   55

答案 1 :(得分:0)

您也可以使用dplyr::coalesce替换NA值,就像在SQL中一样:

exam$math <- coalesce(exam$math, 55)