我有一个名为的脚本foo.R包含另一个脚本other.R,该脚本位于同一目录中:
#!/usr/bin/env Rscript
message("Hello")
source("other.R")
Run Code Online (Sandbox Code Playgroud)
但我想R发现other.R无论当前的工作目录是什么.
换句话说,foo.R需要知道自己的路径.我怎样才能做到这一点?
可能重复:
Rscript:确定执行脚本的路径
我总是运行一个R脚本,它My Documents作为工作目录.
当我运行脚本时,我想获取脚本路径并将工作目录更改为它.我怎么能这样做?
我想让它在与该source()函数相同的文件夹中运行脚本.
在R中必须有一些我对这个source()命令不了解的东西.我还是新手,但我不能为我的生活理解它是如何得到它的目录的!我的问题是:
我有一个包装器脚本,wrapper.R和一个包含一些函数的源文件functions.R.这两个都在同一个目录中.如果我source('functions.R')在包装器脚本内部调用,当站在两个文件所在的目录中时,一切都很好.但是,我希望能够wrapper.R从其他目录运行我的脚本,即不是这些脚本所在的目录.如果我为另一个目录运行我的包装器,它不起作用,我收到一个cannot open the file错误.
我用Google搜索并找到了许多不同的主题,但这个问题似乎很清楚.我理解它的方式,我正在做的方式应该工作.显然,我误解了一些事情.我对该线程的阅读使我相信它source()可以在调用文件所在的目录中工作source().我的阅读也让我相信我不应该使用chdir = TRUE,因为我想保留广告的相对目录.
看来它不起作用......我有什么误解?当从其他地方调用时,如何从与我的包装器脚本相同的目录中获取文件?