附录B 自定义启动环境

程序员最喜欢做的一件事情就是根据自己的工作习惯自定义启动环境。通过自定义启动环境可以设置R选项、设置工作目录、加载常用的包、加载用户编写的函数、设置默认的CRAN下载网站以及执行其他各种常见任务。

读者可以通过站点初始化文件(Rprofile.site)或目录初始化文件(.Rprofile)自定义R的环境。R在启动时会执行这样几个文本文件中的代码。

在启动时,R会加载R HOME/etc目录中的Rprofile.site文件,其中_R_HOME是一个环境变量。然后R会在当前目录中寻找.Rprofile文件。如果R没有在当前目录中找到这个文件,它就会到用户的主目录中去寻找。可以通过Sys.getenv("R\_HOME")Sys.getenv("HOME")getwd()来分别确认R_HOMEHOME和当前工作目录。

可以在这些文件中放入两个特殊函数。每个R会话开始时都会执行.First()函数,而每个会话结束时都会执行.Last()函数。代码清单B-1中是一个Rprofile.site文件的例子。

代码清单B-1 Rprofile.site文件示例

  1. options( papersize="a4")
  2. options(editor="notepad") # 设置常用选项
  3. options(pager="internal")
  4. options(tab.width = 2)
  5. options(width = 130)
  6. options(graphics.record=TRUE)
  7. options(show.signif.stars=FALSE)
  8. options(prompt="> ") # 设置R交互提示符
  9. options(continue="+ ")
  10. .libPaths("C:/my_R_library") # 设置本地库路径
  11. local({r <- getOption("repos") # 设置默认的CRAN镜像
  12. r["CRAN"] <- "http://cran.case.edu/"
  13. options(repos=r)})
  14. .First <- function(){ # 启动函数
  15. library(lattice)
  16. library(Hmisc)
  17. source("C:/mydir/myfunctions.R")
  18. cat("\nWelcome at", date(), "\n")
  19. }
  20. .Last <- function(){ # 会话结束函数
  21. cat("\nGoodbye at ", date(), "\n")
  22. }

这个文件中有以下几点需要提醒大家注意。

  • 设置.libPaths值可以为R目录树之外的扩展包创建一个本地库。这可以用于在升级时保持某个扩展包不变。

  • 设置默认的CRAN镜像就不必在每次执行install.packages()命令时都选择镜像了。

  • .First()函数中可以加载你常用的库,也可以加载保存自己编写的常用函数的源代码文件。

  • .Last()函数中可以执行某些清理操作,包括保存命令历史记录、保存程序输出和保存数据文件等。

还有其他自定义启动环境的一些方法,包括使用命令行选项和环境变量。详见help(Startup)Introduction to R手册的附录B(http://cran.r-project.org/doc/manuals/R-intro.pdf)。