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
Es ist einfach mit der Funktionskette von magrittr. Definieren Sie zum Beispiel eine Funktion my_chain
mit:
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:
Und führen Sie die Kette mit interposed print
function:
Oder mit Warten auf Benutzereingabe:
%Vor%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:
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 ).