Je souhaite utiliser dplyr::mutate()
pour créer plusieurs nouvelles colonnes dans un bloc de données. Les noms de colonnes et leur contenu doivent être générés dynamiquement.
Exemple de données d'iris:
library(dplyr)
iris <- tbl_df(iris)
J'ai créé une fonction pour muter mes nouvelles colonnes à partir de la Petal.Width
variable:
multipetal <- function(df, n) {
varname <- paste("petal", n , sep=".")
df <- mutate(df, varname = Petal.Width * n) ## problem arises here
df
}
Maintenant, je crée une boucle pour construire mes colonnes:
for(i in 2:5) {
iris <- multipetal(df=iris, n=i)
}
Cependant, comme mutate pense que varname est un nom de variable littéral, la boucle ne crée qu'une nouvelle variable (appelée varname) au lieu de quatre (appelée petal.2 - petal.5).
Comment puis-je mutate()
utiliser mon nom dynamique comme nom de variable?
dplyr
a une vignette entière sur l'évaluation non standard
mutate_
, et les autres fonctions ne savent pas vraiment comment l'utiliser.