R语言 如何更改tibble的列数据类型(使用最少的键入)

vxf3dgd4  于 2023-02-27  发布在  其他
关注(0)|答案(3)|浏览(259)

Pipes和tidyverse有时候非常方便,用户想要做的是将一列从一种类型转换为另一种类型。
就像这样:

mtcars$qsec <-as.integer(mtcars$qsec)

这需要键入两倍于我所需要的。请不要建议"with"命令,因为我觉得使用起来很混乱。
tidyverse和magrittr %〈〉%用最少的输入量做同样的事情的方法是什么?还有,如果qsec是第6列,我怎么能只参考列的位置来做呢?类似于(不正确的代码)

mtcars %<>% mutate(as.integer,qsec)
mtcars %<>% mutate(as.integer,[[6]])
2sbarzqh

2sbarzqh1#

如果只键入一次列引用,则符合规范的答案是

mtcars %<>% mutate_at(6, as.integer)

编辑:请注意,截至2021年,mutate_at语法has been superseded by

mtcars %<>% mutate(across(6), as.integer)

要按名称引用列,具有一个冗余列名类型的解决方案为

mtcars %<>% mutate(qsec = as.integer(qsec))

注:信用归于上述评论用户

igetnqfo

igetnqfo2#

此解决方案可能是最短的:

mtcars$qsec %<>% as.integer

诀窍是直接在列上执行强制转换操作,而不再需要mutate()。

mlnl4t2r

mlnl4t2r3#

更新Dplyr 1.0.0

Tidyverse建议使用across(),如@Aren Cambre所述,mutate_at将被替换。
下面是它的外观:

mtcars %>% mutate(across(qsec, as.integer))

重要提示:

请注意,as.integer不带括号()

相关问题