Ich führe ein Beispiel in R aus, gehe die Schritte durch und alles funktioniert bis jetzt, außer dass dieser Code einen Fehler erzeugt:
words <- dtm %>%
as.matrix %>%
colnames %>%
(function(x) x[nchar(x) < 20])
Fehler: Funktion "%>%" konnte nicht gefunden werden
Ich verstehe nicht, welchen Nutzen die Verwendung dieses speziellen Operators
%>%
hat, und jedes Feedback wäre großartig.
Antworten:
Sie müssen zuerst ein Paket (wie
magrittr
oderdplyr
) laden , das die Funktion definiert, dann sollte es funktionieren.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 %>%
Der Pipe-Betreiber
%>%
wurde eingeführt, um "die Entwicklungszeit zu verkürzen und die Lesbarkeit und Wartbarkeit von Code zu verbessern".Aber jeder muss selbst entscheiden, ob es wirklich zu seinem Workflow passt und die Dinge einfacher macht. Weitere Informationen zu
magrittr
finden Sie hier .Wenn Sie die Pipe nicht verwenden
%>%
, gibt dieser Code den gleichen Code zurück wie Ihr Code:words <- colnames(as.matrix(dtm)) words <- words[nchar(words) < 20] words
EDIT: (Ich erweitere meine Antwort aufgrund eines sehr nützlichen Kommentars von @Molx)
quelle
magrittr
der Pipe-Operator von stammt, wird er häufiger mit dem Paket verwendetdplyr
(das erfordert und lädtmagrittr
). Wenn Sie also jemanden sehen, der es verwendet,%>%
stellen Sie sicher, dass Sie nichtdplyr
stattdessen laden .library(tidyverse)
) möglicherweise nicht ausreicht. Ich habe nach (library(dplyr)
) hinzugefügtlibrary(tidyverse)
und wurde dann%>%
gefunden.Unter Windows: Wenn Sie%>% in einer% dopar% -Schleife verwenden, müssen Sie einen Verweis auf das Ladepaket hinzufügen
dplyr
(oder aufmagrittr
welchesdplyr
Ladeprogramm).Beispiel:
plots <- foreach(myInput=iterators::iter(plotCount), .packages=c("RODBC", "dplyr")) %dopar% { return(getPlot(myInput)) }
Wenn Sie den
.packages
Befehl weglassen und%do%
stattdessen verwenden, um alles in einem einzigen Prozess auszuführen, funktioniert dies einwandfrei. Der Grund dafür ist, dass alles in einem Prozess ausgeführt wird, sodass keine neuen Pakete speziell geladen werden müssen.quelle
foreach
.Folgendes kann verwendet werden:
install.packages("data.table") library(data.table)
quelle
Der Vorteil ist, dass die Ausgabe der vorherigen Funktion verwendet wird. Sie müssen beispielsweise nicht wiederholen, woher die Datenquelle stammt.
quelle