[英]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.