gpt4 book ai didi

r - source(..., chdir=TRUE) 似乎没有更改目录

转载 作者:行者123 更新时间:2023-12-02 16:55:21 25 4
gpt4 key购买 nike

我对 R 还很陌生,我正在尝试获取一个文件,该文件再次获取文件。所以我有一个文件,我们称之为 mother.R,其中包含源调用:

source ("grandmother.R")

mother.R 和 grandma.R 在同一目录中。

我现在想找到母亲。R:

source ("C:/Users/whatever/R/mother.R", chdir=T)

我的假设是 chdir=T 会导致在 C:/Users/whatever/R/ 下查找源中的源,但它确实如此像这样采购时找不到祖母。R。我是否误解了chdir?有没有办法做到这一点而不必在 mother.R 中使用绝对路径?

最佳答案

您对 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 正在 getwd() 目录中寻找 grandmother.R...

相反,

> 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 给你返回句柄时,你最终会回到开始的地方,这意味着 chdirsource 调用的本地文件,就像 @ CarlWitthoft 指出。

> getwd()
[1] "/Users/me"

关于r - source(..., chdir=TRUE) 似乎没有更改目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19540116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com