繁体   English   中英

R中的多个工作目录

[英]multiple working directories in R

我写了一个列表,列出了不同的函数和脚本,并将它们放在工作目录的某些子文件夹中,以便可以将所有函数划分为参数(描述性统计,地统计,回归...)。

当我输入source(“ function_in_subfolder”)时,R告诉我没有函数。 我知道发生这种情况是因为函数必须保留在工作目录中。 有没有办法将工作目录的子文件夹也设置为函数的源(以分层的方式进行说明)?

source函数有一个chdir参数,如果将其设置为TRUE ,它将把工作目录设置为脚本所在的目录。 新工作目录在脚本执行期间有效,之后将其更改回。 假设以下结构

main.R
one/
  script.R
  two/
    subscript.R

您可以从main.R调用source("one/script.R", chdir=T) ,在script.R ,可以调用source("two/subscript.R", chdir=T)

但是,默认情况下,R将从当前目录开始搜索。 虽然显然有人试图创建这样的东西 ,但没有诸如“ PATH环境变量之类的“搜索路径列表”之类的东西 我强烈建议您不要尝试“在任何地方”查找脚本文件。 相反,请准确指出要在该点运行哪个脚本。 否则,仅将文件添加到脚本会导致名称冲突,这会导致无法预测的行为,并且也难以调试。

一种解决方案是使用list.files获得函数的完整路径。 例如:

    myfunction.path <- list.files(getwd(),
               recursive=TRUE,full.names=TRUE,
              pattern='^myfunction.R$')

然后您可以调用它:

   source(myfunction.path)

递归调用list.files可能会很昂贵,因此例如您应该在分析开始时对其进行一次调用,然后将所有函数路径存储在命名列表中。 并且要小心 ,如果您在2个不同的子目录中创建两个名称相同的源文件,则结果将不是唯一的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM