我正在创建一个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
答案 0 :(得分:2)
您可以检查多长时间前首先使用if语句更新每周CSV。您可以使用file.info
和Sys.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时,它将变得非常复杂。