當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R sink 將 R 輸出發送到文件


R語言 sink 位於 base 包(package)。

說明

sink轉移R輸出到連接(並停止此類轉移)。

sink.number() 報告正在使用的轉移數量。

sink.number(type = "message") 報告當前用於錯誤消息的連接數。

用法

sink(file = NULL, append = FALSE, type = c("output", "message"),
     split = FALSE)

sink.number(type = c("output", "message"))

參數

file

可寫的connection或命名要寫入的文件的字符串,或NULL以停止sink-ing。

append

合乎邏輯的。如果是 TRUE ,輸出將附加到 file ;否則,它將覆蓋 file 的內容。

type

字符串。輸出流或消息流。該名稱將部分匹配,因此可以縮寫。

split

邏輯:如果 TRUE ,輸出將被發送到新接收器和當前輸出流,就像 Unix 程序 tee 一樣。

細節

sink轉移R輸出到連接(並且必須再次使用才能完成此類轉移,請參見下文!)。如果file是一個字符串,在轉移期間將建立具有該名稱的文件連接。

普通的R輸出(至連接stdout) 默認被轉移type = "output"。隻有提示和(大多數)消息繼續出現在控製台上。消息發送至stderr()(包括來自message,warningstop)可以通過以下方式轉移sink(type = "message")(見下文)。

sink()sink(file = NULL) 結束最後一次轉移(指定類型)。有一堆用於正常輸出的轉移,因此輸出恢複到前一個轉移(如果有)。該堆棧最多有 21 個連接(20 個轉移)。

如果file是一個連接,它將在必要時打開(在"wt"模式下),並在從轉移堆棧中刪除後關閉。

split = TRUE隻有分裂R輸出(通過Rvprintf)和默認輸出writeLines:它不會分割可能發送到的所有輸出stdout().

Sink-ing 消息流應該非常小心地處理。對於該流file 必須是一個已經打開的連接,並且沒有連接堆棧。

如果file是一個字符串,文件將使用當前編碼打開。如果您想要不同的編碼(例如,表示以 UTF-8 存儲的字符串),請使用file連接——但有一些產生的方法R輸出已經將這些字符串轉換為當前編碼。

sink 返回 NULL

對於sink.number(),輸出轉移的數量(0、1、2、...)。

對於sink.number("message"),用於消息的連接號,如果未使用轉移,則為 2。

警告

請勿將 sink 打開的連接用於任何其他目的。該軟件將阻止您無意中關閉此類軟件。

除非您了解實現消息流的源代碼以及由此帶來的陷阱,否則不要下沉消息流。

例子

sink("sink-examp.txt")
i <- 1:10
outer(i, i)
sink()


## capture all the output to a file.
zz <- file("all.Rout", open = "wt")
sink(zz)
sink(zz, type = "message")
try(log("a"))
## revert output back to the console -- only then access the file!
sink(type = "message")
sink()
file.show("all.Rout")

參考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

Chambers, J. M. (1998) Programming with Data. A Guide to the S Language. Springer.

也可以看看

capture.output

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Send R Output to a File。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。