管道和tidyverse有时非常方便.用户想要将一列从一种类型转换为另一种类型.
像这样:
mtcars$qsec <-as.integer(mtcars$qsec)
Run Code Online (Sandbox Code Playgroud)
这需要输入我需要的两倍.请不要建议使用"with"命令,因为我觉得它使用起来很混乱.
什么是tidyverse和magrittr%<>%的方式以最少的打字量做同样的事情?另外,如果qsec是第6列,我该怎么做才引用列位置.像(不正确的代码)
mtcars %<>% mutate(as.integer,qsec)
mtcars %<>% mutate(as.integer,[[6]])
Run Code Online (Sandbox Code Playgroud)
只需输入一次对列的引用 - 符合要求的答案就是
mtcars %<>% mutate_at(6, as.integer)
Run Code Online (Sandbox Code Playgroud)
要按名称引用列,具有一个列名称的冗余类型的解决方案是
mtcars %<>% mutate(qsec = as.integer(qsec))
Run Code Online (Sandbox Code Playgroud)
注意:信用额用于评论上述用户
该解决方案可能是最短的:
mtcars$qsec %<>% as.integer
Run Code Online (Sandbox Code Playgroud)
诀窍是直接在列上执行强制转换操作>不再需要mutate()。
正如across()@Aren Cambre 所指出的,Tidyverse 建议使用which 替换mutate_at。
这是它的样子:
mtcars %>% mutate(across(qsec, as.integer))
Run Code Online (Sandbox Code Playgroud)
注意as.integer是不带括号的()
| 归档时间: |
|
| 查看次数: |
9514 次 |
| 最近记录: |