Unterdrückung von Nachrichten angezeigt werden, indem Sie "drucken" statt "Nachricht" oder "Warnung" in R
Viele R-Pakete, die ich die Arbeit mit einzubeziehen Funktionen, die geben alle Ihre Nachrichten und Warnungen durch die Befehle print() aufrufen, anstatt Befehle zu Nachricht() oder eine Warnung(). Ich möchte in der Lage sein, zu schweigen, diese Funktionen, Statusanzeigen, usw., aber die standard-supressWarnings() oder supressMessages es nicht. Gibt es eine Möglichkeit, kann ich nur suppressPrint?
Beispiel:
silly_developer_function <- function(x){
print("Thanks for using my function!!")
if(is(x, "numeric"))
print("warning, x should be a character")
x
}
Ich würde gerne eine einfache Funktion suppressPrint (), dass ich könnte, wrap-around-ein Aufruf dieser Funktion, würde das unterdrücken der warn-und nutzlos-Nachrichten (aber immer noch drucken Sie die return-Wert).
- Es ist die hackish Strategie mit
sink
, aber es kann einen besseren Weg. - Ihre vorgeschlagenen Bearbeiten von Simon ' s Lösung ist zwar schön, wäre aber besser als edit/Nachtrag zu deinem eigenen post. Danke.
- Danke für den Zeiger. Bearbeite ich meine ursprüngliche Frage mit, dass sich der Vorschlag dann? Seltsam scheint wiederum die Frage in eine Antwort?
- Yep, das ist genau, wie ich es tun würde (und habe oft gesehen, wie er getan, SO). Sie können die Referenz-Simon Urbanek als die Quelle der Idee, und sagen (in der Essenz) 'also hier ist was ich Tat mit, die Idee'.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, die Pakete sind buggy, um mit zu beginnen. Verwendung von
print()
für nichts, aber Nebeneffekt inprint
Implementierungen ist ein schwerer Fehler.Sagte, dass, nutzen Sie einfach
capture.output()
zu sammeln, die die Ausgabe von solchen code, anstatt zu drucken. Also für die oben genannten wäre esprint(..)
automatisch) Sie können wickeln Sie diecapture.output
iminvisible(...)
invisible(...)
umcapture.output
? Ich habe versucht, dies in einer Schleife, aber es gibt keinen offensichtlichen Unterschied, mit und ohneinvisible
. Die?
- Dateien machen es nicht klar, was es bedeutet in diesem Kontext. DankAnderen hacky Weg ist, um die Standardeinstellung zu überschreiben
print
Funktion. Es wird sich auf einige Funktionen, wie das drucken der Körper-Funktionen, sondern Objekte mit eigenen print-Methoden bekomme immer noch zurück, wie üblich.