为什么:
data.frame(a=c(TRUE,NA)) %>% mutate(a=replace_na(FALSE))
返回
a
1 FALSE
2 FALSE
那么将整列设置为值而不是仅仅 NA 元素?
在这种情况下,mutate
应该调用的“向量”版本replace_na
,也就是说,它应该等同于:
> df <- data.frame(a=c(TRUE,NA))
> df$a <- replace_na(df$a, FALSE)
文档中replace_na(data, replace)
说:
如果数据是向量,则 replace 会采用单个值。该单个值将替换向量中所有缺失的值。replace 将转换为数据的类型。
顺便提一下,与这个问题无关,
data.frame(a=c(TRUE,NA)) %>% replace_na(list("a"=FALSE))
按预期工作。
您误用了 mutate(),没有为 replace_na() 函数提供要操作的列。运行 replace_na(FALSE) 只会返回 FALSE,这解释了您的结果。reprex 中的第三行代码给出了您想要的结果。
创建于 2024-11-13,使用reprex v2.1.1
为了解决这个问题,请遵循 replace_na 示例的用法:
根据 replace_na 文档,https://tidyr.tidyverse.org/reference/replace_na.html。应该是
在您的原始代码中: replace_na(FALSE) 结果为 FALSE
但是,您想要的答案是将 df$a na 替换为 FALSE,因此正确的模式应该是:
在 dplyr mutate 函数和 %>% 管道模式中,df$a 可以写成 a。整洁的 dplyr 方式是: