R语言关于脚本文件的输入和输出
启动R后将默认开始一个交互式的会话,从键盘接受输入并从屏幕进行输出。不过你也可以处理写在一个脚本文件(一个包含了R语句的文件)中的命令集并直接将结果输出到多类目标中。
1. 输入
函数source("filename")可在当前会话中执行一个脚本。如果文件名中不包含路径,R将假设此脚本在当前工作目录中。举例来说,source("myscript.R")将执行包含在文件myscript.R中的R语句集合。依照惯例,脚本文件以.R作为扩展名,不过这并不是必需的。
2. 文本输出
函数sink("filename")将输出重定向到文件filename中。默认情况下,如果文件已经存在,则它的内容将被覆盖。使用参数append=TRUE可以将文本追加到文件后,而不是覆盖它。参数split=TRUE可将输出同时发送到屏幕和输出文件中。不加参数调用命令sink()将仅向屏幕返回输出结果。
3. 图形输出
虽然sink()可以重定向文本输出,但它对图形输出没有影响。要重定向图形输出,使用表1-4中列出的函数即可。最后使用dev.off()将输出返回到终端。
表1-4 用于保存图形输出的函数
函 数 | 输 出 |
pdf("filename.pdf") | PDF文件 |
win.metafile("filename.wmf") | Windows图元文件 |
png("filename.png") | PBG文件 |
jpeg("filename.jpg") | JPEG文件 |
bmp("filename.bmp") | BMP文件 |
postscript("filename.ps") | PostScript文件 |
让我们通过一个示例来了解整个流程。假设我们有包含R代码的三个脚本文件script1.R、script2.R和script3.R。执行语句:
将会在当前会话中执行script1.R中的R代码,结果将出现在屏幕上。
如果执行语句:
文件script2.R中的R代码将执行,结果也将显示在屏幕上。除此之外,文本输出将被追加到文件myoutput中,图形输出将保存到文件mygraphs.pdf中。
最后,如果我们执行语句:
文件script3.R中的R代码将执行,结果将显示在屏幕上。这一次,没有文本或图形输出保存到文件中。整个流程大致如图1-6所示。