Je suis un exemple dans R, en passant par les étapes et tout fonctionne jusqu'à présent, sauf que ce code produit une erreur:
words <- dtm %>%
as.matrix %>%
colnames %>%
(function(x) x[nchar(x) < 20])
Erreur: impossible de trouver la fonction "%>%"
Je ne comprends pas les avantages de l'utilisation de cet opérateur spécial %>%
et tout retour serait formidable.
Vous devez charger un package (tel que magrittr
ou dplyr
) qui définit la fonction en premier, puis qui devrait fonctionner.
install.packages("magrittr") # package installations are only needed the first time you use it
install.packages("dplyr") # alternative installation of the %>%
library(magrittr) # needs to be run every time you start R and want to use %>%
library(dplyr) # alternatively, this also loads %>%
L'opérateur de canal %>%
a été introduit pour "réduire le temps de développement et améliorer la lisibilité et la maintenabilité du code"
Mais chacun doit décider lui-même si cela convient vraiment à son flux de travail et facilite les choses. Pour plus d'informations sur magrittr
, cliquez ici .
N'utilisant pas le tube %>%
, ce code renverrait la même chose que votre code:
words <- colnames(as.matrix(dtm))
words <- words[nchar(words) < 20]
words
EDIT: (J'étends ma réponse à cause d'un très utile commentaire qui a été fait par @Molx)
Bien qu’il soit de
magrittr
, l’opérateur de pipe est plus couramment utilisé avec le paquetagedplyr
(qui nécessite et chargemagrittr
), donc chaque fois que vous voyez quelqu'un utiliser%>%
, assurez-vous de ne devrait pas chargerdplyr
à la place.
Sous Windows: si vous utilisez%>% dans une boucle% dopar%, vous devez ajouter une référence pour charger le package dplyr
(ou magrittr
, que dplyr
charge).
Exemple:
plots <- foreach(myInput=iterators::iter(plotCount), .packages=c("RODBC", "dplyr")) %dopar%
{
return(getPlot(myInput))
}
Si vous omettez la commande .packages
et que vous utilisez plutôt %do%
pour que tout soit exécuté en un seul processus, tout fonctionne correctement. La raison en est que tout s’exécute en un seul processus, il n’a donc pas besoin de charger spécifiquement de nouveaux packages.