Next: , Previous: Scope, Up: Writing your own functions



10.8 定制环境

用户可以有好几种办法定制环境。可以修改 位置初始化文件,并且每个目录都有它特有的一个 初始化文件。还有就是利用函数 .First.Last

位置初始化文件的路径可以通过 环境变量 R_PROFILE 设置。如果该变量没有设置, 默认是R安装目录下面的子目录 etc 中的 Rprofile.site。这个文件包括你每次执行 R 时一些自动运行的命令。第二个定制文件是 .Rprofile1,它可以放在任何目录下面。如果 R 在该目录下面 被调用,这个文件就会被载入。这个文件允许用户 定制它们的工作空间,允许在不同的工作目录下 设置不同的起始命令。如果在起始目录中没有 .Rprofile, R 会在用户主目录下面搜索 .Rprofile 文件并且调用它 (如果它 存在的话)。

在这两个文件或者 .RData 中任何叫 .First() 的函数 都有特定的状态的。它会在 R 对话的开始时自动执行并且初始化环境。 下面例子中的定义允许 将提示符改为 $,以及设置其他有用的东西。 这些设置同样会在其他会话中起作用。

因此,这些文件的执行顺序是 Rprofile.site.Rprofile.RData 然后是 .First()。后面文件中 定义会屏蔽掉前面文件中的定义。

     > .First <- function() {
       options(prompt="$ ", continue="+\t")  # $ is the prompt
       options(digits=5, length=999)         # custom numbers and printout
       x11()                                 # for graphics
       par(pch = "+")                        # plotting character
       source(file.path(Sys.getenv("HOME"), "R", "mystuff.R"))
                                             # my personal functions
       library(MASS)                         # attach a package
     }

相似的是,如果定义了函数 .Last(),它(常常)会在对话 结束时执行。一个例子就是

     > .Last <- function() {
       graphics.off()                        # 一个小的安全措施。
       cat(paste(date(),"\nAdios\n"))        # 该吃午饭了?
     }


Footnotes

[1] 在 UNIX 系统中,这种文件不可见。