Diese Frage wurde von Rmarkdown not outputting results of system command to html file motiviert. Aus irgendeinem Grund kann die Ausgabe von system()
in R (oder system2()
) nicht von sink()
oder capture.output()
erfasst werden, daher gibt es derzeit keine Möglichkeit für knitr, die Ausgabe aufzuzeichnen. Zum Beispiel in der R-Konsole:So erfassen Sie die Ausgabe des Systems()
> system('ls')
DESCRIPTION
NAMESPACE
R
README.md
inst
man
aber in einem knitr Dokument, werden Sie den Ausgang nicht sehen, weil capture.output(system('ls'))
character(0)
ist, das heißt die Ausgabe nicht erfasst werden können. Natürlich kann ich cat(system('ls', intern = TRUE), sep = '\n')
tun, wie ich in der Antwort dieser Frage erwähnt habe, aber das ist irgendwie peinlich. Ich frage mich, ob es eine Möglichkeit ist, die Ausgabe von system()
ohne Verwendung von intern = TRUE
und cat()
zu erfassen.
aktualisieren: siehe https://github.com/yihui/knitr/issues/1203 für einen Hack, die ich zur Verfügung gestellt, das Problem zu lösen.
Danke! Ich war mir dessen bewusst, aber ich würde es nicht verwenden, wenn ich einen Weg finde, die Ausgabe von 'system()' zu erfassen. Siehe meinen Kommentar unter Joshua Ulrichs Antwort. –
@Yihui ist es nicht * das * schlecht - vor allem wenn man weiß, dass zB die Optionen 'ignore.stdout' und' ignore.stderr' in 'system' einfach'>/dev/null' oder '2>/dev/null' hinzufügen Umleitung (en) zum 'Befehl' :) – daroczig