Wie kann ich effizient in R debuggen, wenn Pakete wegen der faulen Auswertung unbekannt sind. Ich möchte die grundlegende browser()
Funktionalität behalten, wie es gut funktioniert - sogar mit der testthat package
. Wie im Folgenden erläutert, ist post, --with-keep.source
für mein Projekt in "Projektoptionen => Build Tools" festgelegt.Debugging-Paket :: function() obwohl Lazy-Auswertung verwendet wird
das Verhalten zu reproduzieren, ein Paket erstellen TestDebug
myfun <- function(a,b) {return(a+b)}
und ein Skript enthält example.R
{
browser()
TestDebug::myfun(1,2)
}
bearbeiten: werden ebenfalls abgedeckt Die Situation, in TestDebug::myfun(1,2)
Anrufe otherpackage::myfun2(1,2)
sollte. Ich denke, die Situation sollte in jedem "echten" Paket auftreten?
Das löst das Problem für mein Beispiel. Ich erkannte, dass, wenn Sie ein "echtes" Paket mit mehr Ebenen, z. 'TestDebug :: myfun (1,2)' ruft 'otherpackage :: myfun2 (1,2)' auf, das gleiche Problem tritt erneut auf. Siehe meine Bearbeitung der Frage. – Christoph
Ihre verbesserte Antwort ist mindestens eine Problemumgehung. Ich frage mich immer noch, ob es keine weiteren Optionen gibt. Etwas wie eine Debug-Option 'skip_base_functions', die das gewünschte Verhalten haben könnte. – Christoph