Wie beenden Sie eine Pipe mit einem Zuweisungsoperator?

8

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%     
t.kalinowski 19.07.2015, 22:01
quelle

4 Antworten

6

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

verwenden %Vor%

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

verwenden %Vor%

statt

%Vor%

Sie möchten nicht %>% vor dem ->

haben     
Dason 19.07.2015, 22:59
quelle
5

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:

%Vor%

Ein Beispiel dafür ist:

%Vor%     
Hong Ooi 20.07.2015 00:12
quelle
4

Sie können sich eine Pipe Chain als eine Multiline-Funktion vorstellen, die wie jede andere Multiline-Funktion funktioniert. Die Ausgabe wird normalerweise in der ersten Zeile gespeichert:

%Vor%

Wie Sie es tun würden:

%Vor%     
scoa 19.07.2015 22:05
quelle
2

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.

    
t.kalinowski 19.07.2015 22:03
quelle

Tags und Links