【发布时间】:2017-11-22 14:54:57
【问题描述】:
我有一个 R 的“复制部署”安装,没有设置 R 特定的环境变量。
我想从Rprofile.site 中获取文件:
source("how/to/find/this/file/my_settings.R")
我可以将我的my_settings.R 文件放在哪里,以便无论Rprofile.site 安装在哪个路径中,都可以在Rprofile.site 中找到它?
顺便说一句:我想避免使用my_settings.R 的绝对路径,这确实可行。我更喜欢使用与 Rprofile.site 相同的文件夹或相对于它的路径来支持 R 的复制部署。
编辑 1:问题在于 getwd 总是不同,具体取决于您启动 R 的当前文件夹
【问题讨论】:
-
如果您在计划编写
source指令的地方键入print(getwd()),您应该会得到这个位置 -
我已经尝试过
getwd(),但路径似乎不稳定(至少在 RStudio 中不稳定 - 如果重新启动 R 会话,则取决于当前打开的项目) -
您是否尝试将此行写入您的 Rprofile 文件或在会话打开之后?如果是前者,则意味着在读取 Rprofile 之前设置了项目目录。你也可以使用
.libPaths()[1]或.libPaths()[2],前提是你以后不打算搞这些。在我的电脑上,我可以将一个文件放入C:/Program Files/R/R-3.3.1/library并使用source(paste0(.libPaths()[2],"/my_file.R"))获取它 -
如果已将
getwd放入Rprofile.site并启动了新的 R 会话和新的 RStudio 会话。事实上getwd总是返回命令提示符(R 会话)或 RStudio 项目根文件夹的当前路径。libPaths()可能是可能的解决方法,但我更愿意将源文件存储在同一文件夹中Rprofile.site -
source(paste0(.libPaths()[2],"/etc/my_file.R"))然后呢?如果由于某种原因您的 Rprofile 不存在,您可以使用 libPath 中所需的任何相对路径并访问您的文件。