J'essaie d'appliquer des transformations à tous les éléments d'une trame de données.
Lorsque j'utilise les fonctions régulières d'application, je récupère une matrice et non une trame de données. Existe-t-il un moyen d'obtenir directement une trame de données sans ajouter as.data.frame
à chaque ligne?
df = data.frame(a = LETTERS[1:5], b = LETTERS[6:10])
apply(df, 1, tolower) #Matrix
apply(df, 2, tolower) #Matrix
sapply(df, tolower) #Matrix
as.data.frame(sapply(df, tolower)) # Can I avoid "as.data.frame"?
Nous pouvons utiliser lapply
et l'affecter à nouveau à 'df'
df[] <- lapply(df, tolower)
Le []
conserve la même structure que l'ensemble de données d'origine. Utiliser apply
le convertit en matrix
et ce n'est pas recommandé.
Voici un moyen d'utiliser dplyr
:
library(dplyr)
df %>% mutate_each(funs(tolower))