我一直在使用here
package使我的项目更具可移植性。与我在某些脚本中使用cronR
到schedule时相比,它非常有效。当我从Rstudio运行my_script.R
时,我收到来自library(here)
的消息:
here() starts at /home/pd/projects/my_proj
当我将script.R
设置为使用cronR
运行时,会收到不同的消息:
here() starts at /home/pd
my_schedule.cron
的存储位置。理想情况下,我想将my_schedule.cron
保留在原处。从日志中可以看出,my_script.R
与保存数据时运行得很好,因为here()
使用的路径不正确。从here
或终端运行my_script.R
时,是否可以获得cronR
函数来检测项目目录?
答案 0 :(得分:1)
您可以通过将cmd
添加到项目文件夹中,然后添加通常的部分来修改通常由cron_rscript()
创建的命令cd
:
cmd <- "cd /home/pd/projects/my_proj && /usr/lib/R/bin/Rscript ./my_script.R >> ./my_script.log 2>&1"
cron_add(command = cmd, frequency = 'daily', at = '18:00')
答案 1 :(得分:0)
如果您的#rstats脚本的第一行是wd <-here(),我会来 进入您的实验室,然后将计算机着火。
了解如何使用环境变量
wd <- Sys.getenv("HOME")
wd <- file.path(wd, "projects", "my_proj")
或在cronR用户界面中使用“ Rscript的附加参数”元素将其他内容传递给Rscript并使用commandArgs()进行获取。
如果您不使用cronR接口,而是使用cron_rscript,请使用cronR::cron_rscript(..., rscript_args = "/home/pd/projects/my_proj")
args <- commandArgs(trailingOnly = TRUE)
if(length(args) > 0){
wd <- args[1]
}