有没有办法以编程方式在脚本本身内找到R脚本的路径?
我问这个是因为我有几个脚本使用RGtk2并从.glade文件加载GUI.
在这些脚本中,我不得不setwd("path/to/the/script")在开头放置一条指令,否则将找不到.glade文件(位于同一目录中).
这很好,但如果我将脚本移动到另一个目录或另一台计算机,我必须更改路径.我知道,这不是什么大问题,但有一些东西会很好:
setwd(getScriptPath())
那么,是否存在类似的功能?
我为使用相对路径的包编写了一些函数,例如:
"./data/foobar.rds"
Run Code Online (Sandbox Code Playgroud)
这是一个示例函数:
foo <- function(x) {
x <- readRDS("./data/bar.rds")
return(x)
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我要在包的开发路径中工作,这就像我期望的那样工作.但是当我加载包时,此路径使用当前工作目录而不是包的相对路径.
如何设置它以使包中的函数路径保持在包相对路径中?
我一直在使用这个here 包来让我的项目更便携。除了我cronR用来安排我的一些脚本之外,它的效果很好。当我my_script.R从 Rstudio运行时,我收到一条消息library(here):
here() starts at /home/pd/projects/my_proj
Run Code Online (Sandbox Code Playgroud)
当我设置script.R运行 using 时,cronR我收到一条不同的消息:
here() starts at /home/pd
Run Code Online (Sandbox Code Playgroud)
这my_schedule.cron是存储的地方。理想情况下,我想保持my_schedule.cron原样。my_script.R除了保存数据之外,我可以从日志中看到运行良好的日志,因为使用的路径here()不正确。无论如何,是否可以在从终端或终端运行here时获得检测项目目录的功能?my_script.RcronR