在cronR计划中使用此处包的正确方法

时间:2018-10-12 08:54:41

标签: r

我一直在使用here package使我的项目更具可移植性。与我在某些脚本中使用cronRschedule时相比,它非常有效。当我从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函数来检测项目目录?

2 个答案:

答案 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]
}