我希望将列中的所有NAs更改为0。我可以用mutate()实现,但不能用mutate_if()实现。
这是可行的:
> test <- tibble(Q3.2 = c(1,2, NA, NA, 3),
Q8.2 = c(2, NA, 1, NA, 4))
> test %>% select_("Q3.2", "Q8.2") %>%
mutate(Q3.2 = ifelse(is.na(Q3.2), 0, Q3.2),
Q8.2 = ifelse(is.na(Q8.2), 0, Q8.2))但这不是:
> test %>% select_("Q3.2", "Q8.2") %>%
+ mutate_if(is.na(.), 0, .)
Error in get(as.character(FUN), mode = "function", envir = envir) :
object 'p' of mode 'function' was not found发布于 2018-10-13 21:43:53
或者:
library(tidyr)
replace_na(list(Q3.2 = 0, Q8.2 = 0))发布于 2017-03-17 20:08:21
这不是mutate_if所做的。它对列而不是行进行谓词,因此与mutate中的ifelse的工作方式不同。要将数字列中的所有NA替换为0,请尝试执行以下操作:
test %>% mutate_if(is.numeric, funs(ifelse(is.na(.), 0, .)))或
test %>% mutate_if(is.numeric, coalesce, ... = 0)https://stackoverflow.com/questions/42849849
复制相似问题