6.2 输出到连接

Keywords:

Next: ,Previous: Types of connections,Up: Connections

6.2 输出到连接

我们已经描述过函数 catwritewrite.tablesink 的写入文件的功能,特别是参数append = TRUE时,在一个文件末尾添加内容的功能。这些也是这些函数在 R 1.2.0之前的功能。

这些函数当前功能的体现和以前是一样的,但是实际发生的是,当 file 参数是一个字符串时,打开文件连接(写入或者添加)和函数调用后再次关闭连接。如果我们想重复性地写入到同样的文件中,显式地声明和打开一个连接,把这个连接对象传递给一个输出函数是比较有效的。这使得写入到一个管道成为一种可能。在早期的版本中,通过语法 file = "|cmd"已经部分实现(现在还在使用)。

还有一个函数 writeLines 用于把全部的文本行写入到一个连接。

一些简单的例子如下

     zz <- file("ex.data", "w")  # 打开一个输出文件连接

     cat("TITLE extra line", "2 3 5 7", "", "11 13 17",

         file = zz, sep = "\n")

     cat("One more line\n", file = zz)

     close(zz)

     

     ## 使用管道(Unix)在输出中把小数点转换成逗号

     ## R字符串和(可能)SHELL脚本中都需要把 \ 写两次

     zz <- pipe(paste("sed s/\\\\./,/ >", "outfile"), "w")

     cat(format(round(rnorm(100), 4)), sep = "\n", file = zz)

     close(zz)

     ## 现在查看输出文件:

     file.show("outfile", delete.file = TRUE)

     

     ## 捕获R输出:使用 help(lm) 里面的例子

     zz <- textConnection("ex.lm.out", "w")

     sink(zz)

     example(lm, prompt.echo = "> ")

     sink()

     close(zz)

     ## 现在 `ex.lm.out' 含有需要进一步处理的输出内容

     ## 查看里面的内容,如

     cat(ex.lm.out, sep = "\n")

Hits:Loading...

special topic