我正与其他一些用户在各种R项目上合作。为了重复使用尽可能多的代码,我们创建了一个包含多个项目中使用的许多函数的“stdlib.R”文件。如何在使用不同目录结构的多个用户协作时使用R中的source()?
我们以前有访问网络驱动器,所以代码可以利用常见的路径致电:但是现在
source("f:/code/stdlib.R")
,我们长大了,我不希望依赖于网络驱动器(或任何硬编码路径)的存在。我如何创建使用本地化路径的代码?像这样:
source("%localusrpath%/stdlib.R")
其中每个用户都有一种方法来定义%localusrpath%对他们意味着什么。
对我来说,它可能是C:/ temp,另一个可能是C:/ users/user123/documents。
只要他们设置了“环境变量”,那么它就会为他们工作。
一种解决方案是使用相对路径只:
source("./stdlib.R")
但是,如果用户发生了改变,他们的工作目录,这将失败:
swd("c:/anything_else")
如何建立一个用户特定的环境通过操作系统变量,然后如何检索/使用该变量来连接路径?或者这是一个坏主意?
你应该使'stdlib.R'成为一个完整的包。如果你不打算把它提交给CRAN,它确实没有太多的工作。 – hrbrmstr
这是一个很好的建议,我最终可能会为这个特定的文件做这件事。但是我有很多其他人想与我分享相对路径问题。 。 。我只是选择在这个线程中询问一个来简化问题。我意识到现在我应该表明,我有几十个文件我想分享。 – Jonathan
这使得创建一个包更好的解决方案 – hrbrmstr