Ich möchte eine Pipe mit einem Zuweisungsoperator in R enden.
mein Ziel (in Pseudo R):
%Vor%wobei Daten und analysierte Daten beide ein Datenrahmen sind.
Ich habe ein paar Varianten davon ausprobiert, die jeweils eine eindeutige Fehlermeldung geben. einige Iterationen, die ich versucht habe:
%Vor%Fehlermeldungen:
%Vor%Aktualisierung: Die Art, wie ich das herausgefunden habe, ist:
%Vor%Auf diese Weise können Sie diese zwei Zeilen in Ihre Pipe löschen, um die erneute Ausführung von Code zu minimieren und das Problem zu isolieren.
%Vor% Es ist wahrscheinlich am einfachsten, die Aufgabe als erstes zu erledigen (wie zB bei scoa), aber wenn du es wirklich am Ende setzen willst, kannst du assign
speichert die Ausgabe in "bar"
Alternativ können Sie auch den Operator ->
verwenden. Sie erwähnen es in Ihrer Frage, aber es sieht so aus, als ob Sie etwas wie
statt
%Vor% Sie möchten nicht %>%
vor dem ->
Es sieht so aus, als ob Sie versuchen, den Pipelineoperator %>%
mit dem Nebeneffekt der Erstellung eines neuen Objekts zu dekorieren. Man würde annehmen, dass Sie hierfür den Zuweisungsoperator ->
verwenden können, aber in einer Pipeline nicht. Dies liegt daran, dass ->
eine niedrigere Priorität hat als benutzerdefinierte Operatoren wie %>%
, was das Parsing durcheinander bringt: Ihre Pipeline wird als (initial_stages) -> (final_stages)
analysiert, was unsinnig ist.
Eine Lösung besteht darin, ->
durch eine benutzerdefinierte Version zu ersetzen. Wenn wir gerade dabei sind, können wir auch das Paket lazyeval
verwenden, um sicherzustellen, dass es das Objekt erzeugt, an das es gehen soll:
Ein Beispiel dafür ist:
%Vor% Update: Wie ich das herausgefunden habe, ist: data %>% do analysis %>% {.} -> analyzedData
Auf diese Weise können Sie diese beiden Zeilen in Ihre Pipe löschen, um die erneute Ausführung von Code zu minimieren und das Problem zu isolieren.
%Vor%Wenn Sie einen besseren Weg haben, lassen Sie es mich bitte wissen.