data.frame
の各列のデータ型は同じでないといけない.
NA
は logical
なので,dplyr::mutate
で double
の列の一部を NA
で置換しようとするとエラーになる.
library(dplyr, warn.conflicts = FALSE) data.frame(name=c("a", "b", "c"), value=c(1.2, 3.4, 5.6)) %>% mutate(value=if_else(name=="b", NA, value)) #> Error in mutate_impl(.data, dots): Evaluation error: `false` must be type logical, not double.
なので NA_real_
とかを使う.
library(dplyr, warn.conflicts = FALSE) data.frame(name=c("a", "b", "c"), value=c(1.2, 3.4, 5.6)) %>% mutate(value=if_else(name=="b", NA_real_, value)) #> name value #> 1 a 1.2 #> 2 b NA #> 3 c 5.6