Appliquer une fonction à tous les éléments d'une trame de données

j'essaie d'appliquer quelques transformations à tous les éléments d'une base de données.

quand j'utilise les fonctions d'application régulières, je récupère une matrice et pas une base de données. Est-il possible d'obtenir un dataframe directement sans ajouter as.data.frame pour 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"?
8
demandé sur Deena 2016-10-27 10:40:33

2 réponses

nous pouvons utiliser lapply et l'affecter à 'df'

df[] <- lapply(df, tolower)

[] conserve la même structure que l'ensemble de données original. En utilisant apply convertir en un matrix et ce n'est pas recommandé.

16
répondu akrun 2016-10-27 07:42:54
dplyr:

library(dplyr)
df  %>% mutate_each(funs(tolower))
6
répondu Tim Goodman 2016-10-27 07:52:23