Câu hỏi này được thúc đẩy bởi Rmarkdown not outputting results of system command to html file. Vì một số lý do, đầu ra của system()
trong R (hoặc system2()
) không thể bị bắt bởi sink()
hoặc capture.output()
, vì vậy hiện tại không có cách nào cho knitr để ghi lại đầu ra. Ví dụ, trong R console:Cách nắm bắt đầu ra của hệ thống()
> system('ls')
DESCRIPTION
NAMESPACE
R
README.md
inst
man
nhưng trong một tài liệu knitr, bạn sẽ không nhìn thấy đầu ra, vì capture.output(system('ls'))
là character(0)
, ví dụ đầu ra không thể bị bắt. Tất nhiên tôi có thể làm cat(system('ls', intern = TRUE), sep = '\n')
như tôi đã đề cập trong câu trả lời của câu hỏi đó, nhưng đây là loại vụng về. Tôi tự hỏi nếu đó là một cách để nắm bắt đầu ra của system()
mà không cần sử dụng intern = TRUE
và cat()
.
Cập nhật: xem https://github.com/yihui/knitr/issues/1203 cho một hack mà tôi cung cấp để giải quyết vấn đề.
Cảm ơn! Tôi đã nhận thức được điều này nhưng tôi không sử dụng nó nếu tôi có thể tìm thấy một cách để nắm bắt đầu ra của 'system()'. Xem bình luận của tôi dưới câu trả lời của Joshua Ulrich. –
@Yihui nó không * rằng * xấu - đặc biệt là biết rằng các tùy chọn 'ignore.stdout' và' ignore.stderr' trong 'system' chỉ cần thêm'>/dev/null' hoặc '2>/dev/null' chuyển hướng đến 'lệnh' :) – daroczig