Rprofile.site中的寻源:如何查找寻源文件的位置
我有一个R的“复制部署”安装,没有设置特定于R的环境变量 我想从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的复制
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()
可能是一种解决方法,但我更愿意将源文件存储在同一文件夹alsRprofile.site
source(粘贴0(.libpath()[2],“/etc/my_file.R”))
然后呢?如果由于某种原因您的Rprofile不在那里,您可以使用您需要的任何相对路径从libPath访问您的文件。注意:这是一个很好的Windows解决方案,在Linux上,Rprofile.site
位于/etc/R
中,因此无法相对于库路径搜索文件(但如果绝对路径始终相同,则也不必如此!)。