web-dev-qa-db-fra.com

r: tidyverse: Comment changer le type de données de colonne en utilisant des canaux avec le moins de frappe

Les tuyaux et les tidyverse sont parfois très pratiques. L'utilisateur souhaite convertir une colonne d'un type à un autre.

Ainsi:

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

Cela nécessite de taper deux fois ce dont j'ai besoin. Veuillez ne pas suggérer la commande "avec" car je trouve cela déroutant à utiliser.

Quelle serait la manière tidyverse et magrittr% <>% de faire la même chose avec le moins de frappe possible? De plus, si qsec est la 6e colonne, comment puis-je le faire en me référant simplement à la position de la colonne. Quelque chose comme (code incorrect)

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

Cette solution est probablement la plus courte:

mtcars$qsec %<>% as.integer

L'astuce consiste à effectuer l'opération de conversion directement sur la colonne> plus besoin de mutate ().

5
Agile Bean

En ne saisissant la référence à la colonne qu'une seule fois - la réponse conforme est

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

Pour faire référence à la colonne par son nom, une solution avec une saisie redondante du nom de la colonne est

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

REMARQUE: le mérite revient aux utilisateurs qui commentent ci-dessus

9
userJT