Durchlaufen einer Pipeline mit Zwischenergebnissen

8

Gibt es eine Möglichkeit, das Ergebnis einer Pipeline bei jedem Schritt auszugeben, ohne es manuell zu tun? (z. B. ohne Auswahl und Ausführung nur der ausgewählten Stücke)

Ich finde oft, dass ich eine Pipeline Zeile für Zeile durchführe, um mich daran zu erinnern, was sie gerade macht oder wann ich eine Analyse entwickle.

Zum Beispiel:

%Vor%

Ich würde auswählen und ausführen:

%Vor%

und dann ...

%Vor%

und so weiter ...

Aber die Auswahl von CMD/CTRL + ENTER in RStudio lässt eine effizientere Methode zu wünschen übrig.

Kann das im Code gemacht werden?

Gibt es eine Funktion, die eine Pipeline annimmt und sie Zeile für Zeile ausführt / verdaut, die die Ausgabe bei jedem Schritt in der Konsole anzeigt, und weiter mit der Eingabetaste wie in demos(...) oder examples(...) der Pakethilfslinien

    
andrew wong 08.05.2015, 08:50
quelle

4 Antworten

1

Es ist einfach mit der Funktionskette von magrittr. Definieren Sie zum Beispiel eine Funktion my_chain mit:

%Vor%

und erhalten das Endergebnis einer Kette als:

%Vor%

Sie können eine Funktionsliste mit functions(my_chain) erhalten und definieren Sie eine "Stepper" -Funktion wie folgt:

%Vor%

Und führen Sie die Kette mit interposed print function:

%Vor%

Oder mit Warten auf Benutzereingabe:

%Vor%     
bergant 08.05.2015, 13:36
quelle
3

Sie können auswählen, welche Ergebnisse gedruckt werden sollen, indem Sie den T-Operator ( %T>% ) und print() verwenden. Der Tee-Operator wird ausschließlich für Nebeneffekte wie Drucken verwendet.

%Vor%     
seasmith 07.01.2017 17:48
quelle
2

Druck hinzufügen:

%Vor%     
zx8754 08.05.2015 08:56
quelle
2

IMHO magrrit ist vor allem interaktiv nützlich, das heißt, wenn ich Daten erforsche oder eine neue Formel / ein neues Modell erstelle.

In diesen Fällen ist das Speichern von Zwischenergebnissen in verschiedenen Variablen sehr zeitraubend und störend, während die Pipes mich auf Daten konzentrieren lassen, anstatt zu tippen:

%Vor%

Das Problem hier ist, dass ich nicht im Voraus weiß, wie das letzte Rohr sein wird, wie in @bergant.

Eingabe, wie in @ zx8754,

%Vor%

fügt viel Overhead hinzu und, für mich, besiegt den ganzen Zweck von magrittr.

Im Wesentlichen fehlt es bei magritr an einem einfachen Operator, der sowohl Drucke als auch Rohre Ergebnisse ausgibt.
Die gute Nachricht ist, dass es ziemlich einfach scheint, einen zu bauen:

%Vor%

Jetzt können Sie eine Pipe drucken:

%Vor%

Ich habe festgestellt, dass, wenn man eine Tastenbelegung für %P>% und %>% definiert / verwendet, der Prototyping-Workflow sehr rationalisiert ist (siehe Emacs ESS oder RStudio ).

    
antonio 11.12.2016 21:37
quelle

Tags und Links