web-dev-qa-db-ja.com

r:tidyverse:型指定の最も少ないパイプを使用して列のデータ型を変更する方法

パイプとtidyverseは時々非常に便利です。ユーザーは、1つの列をあるタイプから別のタイプに変換したいと考えています。

そのようです:

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

これには、必要なものを2回入力する必要があります。 "with"コマンドの使用はわかりにくいので、提案しないでください。

最小限のタイピングで同じことを行うtidyverseおよびmagrittr%<>%の方法は何でしょうか?また、qsecが6番目の列である場合、列の位置を参照するだけでどのように実行できますか?次のようなもの(正しくないコード)

mtcars %<>% mutate(as.integer,qsec)
mtcars %<>% mutate(as.integer,[[6]])
9
userJT

このソリューションはおそらく最短です:

mtcars$qsec %<>% as.integer

トリックは、列に対して直接キャスト操作を実行することです> mutate()はもう必要ありません。

5
Agile Bean

列への参照を1回だけ入力すると、準拠した答えは

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

名前で列を参照するために、列名を1つ重複して入力するソリューションは次のとおりです。

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

注:クレジットは上記のユーザーにコメントすることになります

9
userJT