使用不在Task Scheduler R环境中的变量

时间:2019-06-04 06:29:18

标签: r rstudio taskscheduler windowstaskschedule

我正在创建一个Rscript脚本,它将通过taskcheduleR软件包每30分钟运行一次。但是,有些变量需要每30分钟更新一次,而有些变量则只能每周更新一次。我希望每周计划中的变量仍然在全局环境中。例如

#Define a variable x that gets run once per week.
x = 10

#Define a variable y that gets run every thirty minutes. 
y = x*5
print(y)

似乎我可能需要2个脚本,其中第一个脚本将数据写入CSV,然后在每30分钟运行的脚本中读取一次。我想知道是否有办法在一个脚本上完成所有这些工作。

#script_OnceAweek.R
x = 1:10
write.csv(x, "file.csv")

#script_Every30min.R
k = read.csv("file.csv")
y = k*5

2 个答案:

答案 0 :(得分:2)

您可以检查多长时间前首先使用if语句更新每周CSV。您可以使用file.infoSys.time

info <- file.info("yourfile") Sys.time() - info$mtime

如果已使用一周,请进行更新;否则,请跳过该步骤。

答案 1 :(得分:1)

据我所知,由于您计划应运行的每个文件的任务,因此无法区分同一文件中某些行的执行时间。

但是我也许可以使不同文件之间的数据交换更加容易。

在脚本之间只有一个数据对象可交换时:

#script_OnceAweek.R
x = 1:10
saveRDS(x, file = "file.csv")

#script_Every30min.R
k = readRDS("file.csv")
y = k*5

如果您有多个数据对象:

#script_OnceAweek.R
x = 1:10
y = 4:6
save(x, y, file = "file.csv")

#script_Every30min.R
load("file.csv")
k = x
y = k*5

第一个解决方案将保存到.RDS文件,第二个解决方案将保存到.Rdata文件。

对此的好处是,您可以保存所有R数据类型,也可以将它们加载为R数据类型。这意味着您甚至可以保存诸如数据框列表之类的对象。

当您为此使用csv时,它将变得非常复杂。