Ich möchte die Ausgabe eines Befehls (in diesem Fall der apply
Funktion) unterdrücken .
Ist es möglich, dies ohne Verwendung zu tun sink()
? Ich habe die unten beschriebene Lösung gefunden, möchte dies aber nach Möglichkeit in einer Zeile tun.
Ich möchte die Ausgabe eines Befehls (in diesem Fall der apply
Funktion) unterdrücken .
Ist es möglich, dies ohne Verwendung zu tun sink()
? Ich habe die unten beschriebene Lösung gefunden, möchte dies aber nach Möglichkeit in einer Zeile tun.
capture.output
. Oder verwenden Sie*_ply
aus dem Plyr-Paket.lapply
stimme Hadleys Vorschlag zu: Wenn Sie wirklich versuchen, eine Apply- Funktion auszuführen, z. B. ohne Druckausgabe, ist 'l_ply' aus seinemplyr
Paket wahrscheinlich die am besten geeignete Wahl.Antworten:
Es ist nicht klar, warum Sie dies ohne tun möchten
sink
, aber Sie können alle Befehle in dieinvisible()
Funktion einschließen und die Ausgabe wird unterdrückt. Zum Beispiel:Andernfalls können Sie die Dinge immer in einer Zeile mit einem Semikolon und Klammern kombinieren:
quelle
invisible()
unterdrückt nur den Druck eines Ausdrucks, es ist keinsink()
Einzeiler.apply
gemäß der Frage :invisible(apply(matrix(1:10), 1, as.numeric))
.{ sink("/dev/null"); ....; sink(); }
ich es definitiv vorziehen würdecapture.output
, wiecapture.output
genau oben, nur viel besser (schauen Sie sich die Quelle an, sie nennt sink wie oben, plus ein paar nette Sachen).idw
unter Windows. Ich denke, die beste Lösung ist die Verwendung vonsink
Verwenden Sie die
capture.output()
Funktion. Es funktioniert sehr ähnlich wie ein Einzelstücksink()
und kann im Gegensatzinvisible()
dazu mehr als nur das Drucken von Nachrichten unterdrücken. Setzen Sie das Dateiargument/dev/null
unter UNIX oderNUL
unter Windows. Zum Beispiel unter Berücksichtigung von Dirks Anmerkung:quelle
capture.output(x <- log(2))
und danachx
hat es den Wert vonlog(2)
...Sie können 'capture.output' wie unten verwenden. Auf diese Weise können Sie die Daten später verwenden:
quelle
R druckt nur automatisch die Ausgabe nicht zugewiesener Ausdrücke. Weisen Sie also einfach das Ergebnis von
apply
einer Variablen zu, und es wird nicht gedruckt.quelle
print()
odercat()
in sich, das auf den Bildschirm geht, nicht auf eine Zuordnung.Die folgende Funktion sollte genau das tun, was Sie wollen:
Zum Beispiel mit der Funktion hier:
Laufen
Weist x 42 zu, druckt aber nicht "BAR!" zu STDOUT
Beachten Sie, dass Sie unter einem UNIX-Betriebssystem "NUL" durch "/ dev / null" ersetzen müssen.
quelle
Hadleys Kommentar zu einer Antwort machen (hoffe, sie besser sichtbar zu machen). Die Verwendung der Apply-Familie ohne Druck ist bei Verwendung des
plyr
Pakets möglichErstellt am 2020-05-19 durch das reprex-Paket (v0.3.0)
quelle
erzeugt eine Ausgabe ohne NULL am Ende der Zeile oder in der nächsten Zeile
quelle
Falls jemand hier ankommt und nach einer Lösung für RMarkdown sucht, werden alle Ausgaben unterdrückt:
Der Code wird ausgeführt, aber die Ausgabe wird nicht in das HTML-Dokument gedruckt
quelle