我对R很新,我正在尝试提供一个再次采购文件的文件。所以我有一个文件,让我们称之为mother.R,它包含一个源代码:
source ("grandmother.R")
mother.R和grandmother.R在同一目录中。
我现在想要母亲来源.R:
source ("C:/Users/whatever/R/mother.R", chdir=T)
我的假设是chdir=T
会导致在C:/Users/whatever/R/
下查找源中的源,但是在这样的采购时它找不到grandmother.R。我是否想念chdir
?有没有办法做到这一点,而不必在mother.R?
答案 0 :(得分:8)
您对source
的工作原理的理解对我来说似乎是正确的。但是,让我们编写一个示例,以便您可以与您的设置进行比较,也许可以找到出错的地方。
让/Users/me/test/mother.R
文件包含以下内容:
print("I am the mother")
print(paste("The current dir is:", getwd()))
source("grandmother.R") # local path
并让/Users/me/test/grandmother.R
文件包含以下内容:
print("I am the grandmother")
你从哪里开始将有助于理解:
> getwd()
[1] "/Users/me"
这不起作用:
> source("/Users/me/test/mother.R")
[1] "I am the mother"
[1] "The current dir is: /Users/me"
Error in file(filename, "r", encoding = encoding) :
cannot open the connection
In addition: Warning message:
In file(filename, "r", encoding = encoding) :
cannot open file 'grandmother.R': No such file or directory
因为R在grandmother.R
目录中寻找getwd()
...
相反,
> source("/Users/me/test/mother.R", chdir = TRUE)
[1] "I am the mother"
[1] "The current dir is: /Users/me/test"
[1] "I am the grandmother"
有效,因为source()
暂时将当前目录更改为/Users/me/test/
,可以找到grandmother.R
。
当source
为您提供处理权时,您最终会在您开始的位置结束,这意味着chdir
是source
调用的本地地方,如@CarlWitthoft指出的那样。
> getwd()
[1] "/Users/me"