当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。