utiliser %>% avec des fonctions de remplacement comme colnames()<-
Comment puis-je utiliser le tuyau de l'opérateur à la pipe en fonction de remplacement comme colnames()<-
?
Voici ce que j'essaie de faire:
library(dplyr)
averages_df <-
group_by(mtcars, cyl) %>%
summarise(mean(disp), mean(hp))
colnames(averages_df) <- c("cyl", "disp_mean", "hp_mean")
averages_df
# Source: local data frame [3 x 3]
#
# cyl disp_mean hp_mean
# 1 4 105.1364 82.63636
# 2 6 183.3143 122.28571
# 3 8 353.1000 209.21429
Mais, idéalement, il serait quelque chose comme:
averages_df <-
group_by(mtcars, cyl) %>%
summarise(mean(disp), mean(hp)) %>%
add_colnames(c("cyl", "disp_mean", "hp_mean"))
Est-il un moyen de faire cela sans écrire une spécialité de la fonction à chaque fois?
Les réponses ici sont un début, mais pas exactement à ma question: Le chaînage des opérateurs arithmétiques dans dplyr
- Vous pouvez nommer vos entrées
summarise
-group_by(mtcars, cyl) %>% summarise(disp_mean=mean(disp), hp_mean=mean(hp))
Bien que je ne vois pas comment à l'aide decolnames
est que beaucoup de glisser. Est-ce que chaque petite chose à faire dans dplyr? - Je crois qu'il y a un
rename()
fonction dansdplyr
. Ou oui, faire ce que @thelatemail dit. - Ou simplement l'utiliser
setNames
comme dansgroup_by(mtcars, cyl) %>% summarise(mean(disp), mean(hp)) %>% setNames(., c("cyl", "disp_mean", "hp_mean"))
- maintenant, pourquoi n'ai-je pas penser que, vu comme je viens de le souligner en plus que 2 minutes plus tôt?
- J'ai écrit
"names<-"(., ...
et puis je me suis dit "attendez une minute"... - Merci pour ces suggestions. Il est vrai que chaque petite chose n'a pas besoin d'être fait dans
dplyr
.rename()
etsetNames
résout le problème en question. Mais il y a d'autres "remplacement" des fonctions que faire quelque chose commefoo(x) <- y
. Je me demandais si dplyr a une façon de les transmettre. - Vous pouvez utiliser cette fonction de la même manière, comme indiqué dans la Henriks réponse.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser
colnames<-
ousetNames
(merci à @David Arenburg)Ou choisir une
Alias
(set_colnames
) à partir demagrittr
:dplyr::rename
peut être plus pratique si vous êtes seulement de (re)nomination d'un peu de nombre de colonnes (il faut écrire à la fois l'ancien et le nouveau nom; voir @Richard Scriven réponse)`foo<-`()
de la syntaxe du travail pour tout le "remplacement" des fonctions.Dans
dplyr
, il ya un couple de façons différentes de renommer les colonnes.Est d'utiliser le
rename()
fonction. Dans cet exemple, vous auriez besoin de back-cochez les noms créé parsummarise()
, car ils sont l'expression.Vous pouvez également utiliser
select()
. C'est un peu plus facile parce que nous pouvons utiliser le numéro de la colonne, éliminant le besoin de s'amuser avec en arrière-tiques.Mais pour cet exemple, le meilleur moyen serait de faire ce que @thelatemail mentionné dans les commentaires, et c'est à retourner à l'étape précédente et le nom des colonnes dans
summarise()
.Nous pouvons ajouter un suffixe au résumé des variables en utilisant
.funs
argument desummarise_at
avec dplyr comme le code ci-dessous.Aussi, nous pouvons définir les noms de colonne de plusieurs façons.