如何简化多次调用dplyr::mutate_if的R语言代码?
更简洁的R代码写法
当然有更简洁的写法,用dplyr的across()函数可以把三次mutate_if的调用合并成一次mutate操作,这也是dplyr新版本推荐的替代mutate_if这类scoped动词的写法:
mpg |> dplyr::mutate( across(c(where(is.character), where(is.logical)), as.factor), across(where(is.integer), as.numeric) )
写法说明
- 第一个
across通过c(where(is.character), where(is.logical))同时选中所有字符型和逻辑型的列,统一应用as.factor转换 - 第二个
across选中所有整数型列,应用as.numeric转换 - 整个逻辑只需要调用一次
mutate,代码结构更紧凑,也符合dplyr的最新语法规范
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

