如何让renv项目同时加载用户.Rprofile与项目专属.Rprofile?
让renv项目同时加载用户级.Rprofile的方案
方案一:手动修改单个项目的.Rprofile
renv生成的项目专属.Rprofile默认不会加载用户级配置,你可以直接在项目根目录的.Rprofile最后加上一行代码,调用用户级配置文件:
# 加载用户级.Rprofile source(Sys.getenv("R_PROFILE_USER"))
这样每次启动该项目时,会先执行renv的项目初始化逻辑,再加载你用户级的那些设置。
方案二:全局配置renv,所有新项目自动生效
要是不想每个项目都手动改,也可以给renv设置全局模板,让新建项目自动包含加载用户配置的代码:
- 先在R里运行
renv::paths$root(),找到renv的全局配置目录(通常是~/.renv) - 在这个目录下新建
templates文件夹,然后在里面创建一个.Rprofile文件,内容如下:
# 保留renv默认的项目激活逻辑 source("renv/activate.R") # 加载用户级.Rprofile source(Sys.getenv("R_PROFILE_USER"))
之后用renv::init()创建的新项目,自动生成的.Rprofile就会自带加载用户配置的代码了。
额外说明
你提到的Sys.setenv("_R_CHECK_LENGTH_1_CONDITION_" = "true")这类环境变量设置,完全不会影响项目的包依赖和可复现性,放心用就行。如果用户级配置里有加载特定包的代码,才需要担心复现性问题,但你的情况不存在这个风险。
内容的提问来源于stack exchange,提问作者its.me.adam
相关产品推荐
相关产品推荐

