Pipes和tidyverse有时候非常方便,用户想要做的是将一列从一种类型转换为另一种类型。
就像这样:
mtcars$qsec <-as.integer(mtcars$qsec)
这需要键入两倍于我所需要的。请不要建议"with"命令,因为我觉得使用起来很混乱。
tidyverse和magrittr %〈〉%用最少的输入量做同样的事情的方法是什么?还有,如果qsec是第6列,我怎么能只参考列的位置来做呢?类似于(不正确的代码)
mtcars %<>% mutate(as.integer,qsec)
mtcars %<>% mutate(as.integer,[[6]])
3条答案
按热度按时间2sbarzqh1#
如果只键入一次列引用,则符合规范的答案是
编辑:请注意,截至2021年,
mutate_at
语法has been superseded by要按名称引用列,具有一个冗余列名类型的解决方案为
注:信用归于上述评论用户
igetnqfo2#
此解决方案可能是最短的:
诀窍是直接在列上执行强制转换操作,而不再需要mutate()。
mlnl4t2r3#
更新Dplyr 1.0.0
Tidyverse建议使用
across()
,如@Aren Cambre所述,mutate_at
将被替换。下面是它的外观:
重要提示:
请注意,
as.integer
不带括号()