Ich habe einen Wrapper um die integrierte warning()
-Funktion in R, die im Grunde warning(sprintf(...))
aufruft:
warningf <- function(...)
warning(sprintf(...))
Das liegt daran, dass ich warning(sprintf(...))
so oft benutze, dass ich beschlossen habe, eine Funktion daraus zu machen (es ist in einem Paket von Funktionen, die ich oft benutze).
Dann benutze ich warningf
, wenn ich Funktionen schreibe. Also schreibe ich anstatt:
f <- function() {
# ... mache Sachen
warning(sprintf('Ich habe %i Bananen!',2))
# ... mache Sachen
}
schreibe ich:
f <- function() {
# ... mache Sachen
warningf('Ich habe %i Bananen!',2)
# ... mache Sachen
}
Wenn ich die erste f()
aufrufe, bekomme ich:
Warnmeldung:
In f() : Ich habe 2 Bananen!
Dies ist gut - es sagt mir, woher die Warnung von f()
kommt und was schief gelaufen ist.
Wenn ich die zweite f()
aufrufe, bekomme ich:
Warnmeldung:
In warningf("Ich habe %i Bananen!",2) : Ich habe 2 Bananen!
Dies ist nicht ideal - es sagt mir, dass die Warnung in der warningf
-Funktion war (natürlich, weil es die warningf
-Funktion ist, die warning
aufruft, nicht f
), und verdeckt die Tatsache, dass sie tatsächlich aus der f()
-Funktion stammt.
Also meine Frage ist: Kann ich irgendwie den warning
-Aufruf "höherstufen", damit er die Warnung in f()
-Nachricht anzeigt anstatt die Warnung in warningf
?