我希望能够
source()
一个在同一目录中包含不同文件的文件,但我不想在运行此文件之前从 R 提示符中设置工作目录:
> getwd()
[1] "/Users/myser"
> source("/Users/myuser/workspace/myproject/myfile.r")
在 /Users/myuser/workspace/myproject 中,会有 myfile.r 和 my-utils.r。 myfile.r 从其中调用
source('my-utils.r')
。
其他编程语言可以确定当前文件的路径。 R有类似的东西吗?示例:
cur_dir <- sys.get_current_file_path()
source(file.path(cur_dir, "my-utils.r"))
source("/Users/myuser/workspace/myproject/my-utils.r", chdir=TRUE)
当
chdir
选项设置为true且源文件参数为完整路径时,在获取文件时将使用文件目录作为工作目录。
注意:
cur_dir <- sys.get_current_file_path()
没有多大意义,因为路径名不是唯一的。
我知道现在已经非常晚了,但是对于未来的人来说,我在获取脚本来源的目录时遇到了这个答案。
我认为您应该能够在不安装额外软件包的情况下执行此操作:
cur_dir = utils::getSrcDirectory(function(){})[1]
source(file.path(cur_dir, 'my-utils.R'))