R启动项配置文件

配置文件

R每次启动的时候都会读取两个文件:

  • .Renviron:主要作用是设置环境变量,告诉R在哪里寻找外部程序,可以自定义用户信息

  • .Rprofile:每次R启动的时候会运行里面的代码,所以如果里面设置的很多代码,R启动就会变慢

R启动的时候最开始读取.Renviron文件,接着读取.Rprofile文件

配置文件在哪里?

实际上每台电脑里存在好几个版本的配置文件,但是每次启动的时候只会读取一个,需要注意以下三个目录:

  • R_HOME:R安装的文件夹,etc子目录包含配置文件,可以利用R.home()获取该目录

  • HOME:用户的家目录,用户特异性的配置文件,一般是在/home/username(Linux),c:\User\username(Windows),可以通过Sys.getenv("HOME")获取

  • R的工作目录,getwd()获取

R读取配置文件(.Renviron.Rprofile)的优先级是工作目录>HOME>R_HOME,因此如果需要创建项目特异的配置文件的话,可以在项目根目录下创建配置文件:

file.edit("~/.Rprofile") # edit .Rprofile in HOME
file.edit(".Rprofile") # edit project specific .Rprofile

我们可以通过以下的脚本来检查是否存在配置文件:

site_path = R.home(component = "home")
fname = file.path(site_path, "etc", "Rprofile.site")
file.exists(fname)
[1] FALSE

file.exists("~/.Rprofile")
[1] TRUE

可以看到R安装的子目录etc里面不存在.Rprofile.site,但是我的家目录里面存在。

如何理解配置文件

这里创建一个简单的配置文件,我们使用file.edit("~/.Rprofile")来打开文件,添加内容并重启R

# A fun welcome message
message("Hi Tom, welcome to R")
# Customise the R prompt that prefixes every command
# (use " " for a blank prompt)
options(prompt = "R-> ")

重启之后显示:

Hi Tom, welcome to R
R->

R默认提示符是> ,这里我们设置成了R-> ,所以通过.Rprofile可以很方便个性化设置启动配置,可以参考 statmethods.net来定制化启动项。比如我一般会设置代码连接符为" ",默认的是+,每次复制代码的时候都带着一堆+号,修改后就没有了。

options(prompt = "-> ", continue = "  ")

对于我们来说最重要的就是在.Rprofile中设置默认镜像等,不然国内使用默认镜像的话下载包速度感人:

options(BioC_mirror="https://mirrors.tuna.tsinghua.edu.cn/bioconductor")
options(repos="https://mirrors.tuna.tsinghua.edu.cn/CRAN/")

.Renviron文件设置环境变量等,R启动的时候首先搜索全局.Renviron,接着本地.Renviron.Renviron一个典型应用是设置.R_LIBS,决定R包安装文件夹:

# Linux
R_LIBS=~/R/library
# Windows
R_LIBS=C:/R/library

可以通过Sys.getenv("R_LIBS_USER")看包安装的默认文件夹。

需要注意的是千万别胡乱添加,不然出错你都不知道错在哪?

参考:https://csgillespie.github.io/efficientR/set-up.html

Researcher

I am a PhD student of Crop Genetics and Breeding at the Zhejiang University Crop Science Lab. My research interests covers a range of issues:Population Genetics Evolution and Ecotype Divergence Analysis of Oilseed Rape, Genome-wide Association Study (GWAS) of Agronomic Traits.

comments powered by Disqus