Rprofile.site中的寻源:如何查找寻源文件的位置

Rprofile.site中的寻源:如何查找寻源文件的位置,r,rprofile,R,Rprofile,我有一个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的复制

我有一个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

的当前文件夹。如果无法使用绝对路径,并且工作目录不稳定,一种方法是使用
.libpath
.Library

默认情况下,您的
Rprofile
应该位于目录
paste0(.Library,“/../etc/”
paste0(.libpath()[2],“/etc/”
中,这样您就可以将文件放在那里,并使用以下工具对其进行源代码转换:

source(paste0(.Library,"/../etc/my_settings.R")) 
source(paste0(.libPaths()[2],"/etc/my_settings.R")) 
据我所知,第一个选项是稳定的(我认为不能更改
.Library
的值)

如果使用第二个选项,只需确保将来更改
.libPaths()
文件源后再更改即可


有关默认文件夹的更多信息,请参见
?.libPaths

如果您键入
打印(getwd())
您计划在哪里写入
源代码
指令,您应该获得此位置我已经尝试过
getwd()
,但路径似乎不稳定(至少不在RStudio内-如果重新启动R会话,则取决于当前打开的项目)您尝试将此行写入Rprofile文件或在会话打开后写入吗?如果是前者,则表示在读取Rprofile之前设置了项目目录。您还可以使用
.libpath()[1]
.libpath()[2]
,假设您不打算以后再处理这些。在我的计算机上,我可以将一个文件放入
C:/Program Files/R/R-3.3.1/library
中,并使用
源(粘贴0(.libpath()[2],“/my_file.R”))进行源代码生成
如果已将
getwd
放入
Rprofile.site
并启动了新的R会话和新的RStudio会话。事实上
getwd
始终返回命令提示符(R会话)或RStudio项目根文件夹的当前路径。
libPaths()
可能是一种解决方法,但我更愿意将源文件存储在同一文件夹als
Rprofile.site
source(粘贴0(.libpath()[2],“/etc/my_file.R”))
然后呢?如果由于某种原因您的Rprofile不在那里,您可以使用您需要的任何相对路径从libPath访问您的文件。注意:这是一个很好的Windows解决方案,在Linux上,
Rprofile.site
位于
/etc/R
中,因此无法相对于库路径搜索文件(但如果绝对路径始终相同,则也不必如此!)。