我们已经描述过函数 cat,write,write.table
和 sink 的写入文件的功能,特别是参数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")