如何从Rscript设置选项(),使用Rscript.exe运行

如何从Rscript设置选项(),使用Rscript.exe运行,r,rstudio,scheduled-tasks,headless,rscript,R,Rstudio,Scheduled Tasks,Headless,Rscript,我正在尝试在我的.Rproj环境中将API访问令牌设置为一个选项。我希望此Rscript每30分钟运行一次,并相应地更新选项() 这是从我的Rscript运行的代码,当使用Rstudio中的source->按钮手动运行时,options()arg设置正确,我可以获得getOption(td\u访问\u令牌) consumer\u key您是使用带有readRDS的绝对路径,还是使用相对路径?如果是相对路径,则从任务计划程序运行时,工作目录可能不相同。@MrFlick我在Rscript中使用绝对路

我正在尝试在我的
.Rproj
环境中将API
访问令牌设置为一个选项。我希望此Rscript每30分钟运行一次,并相应地更新
选项()

这是从我的Rscript运行的代码,当使用Rstudio中的
source->
按钮手动运行时,
options()arg
设置正确,我可以获得
getOption(td\u访问\u令牌)


consumer\u key您是使用带有
readRDS
的绝对路径,还是使用相对路径?如果是相对路径,则从任务计划程序运行时,工作目录可能不相同。@MrFlick我在
Rscript
中使用绝对路径来避免此问题…我一直在使用
here()
,但为了避免此问题,将其更改为绝对路径。代码:readRDS(“C:/Users/jjjfan/OneDrive/Documents/Finance/R Programming/Custom Risk Ranges/refresh\u token.rds”)噢,您是否只是在后台运行刷新脚本,但又启动了另一个R实例?因为
选项()。它们不是全局的或持久的。R的每个实例都有自己的私有选项集。您不能从不同会话更新一个会话的选项。是的,如果您的脚本到此结束,
options()
将不起任何作用。Rscript在运行时创建自己的会话,当它结束时,一切都被忘记了。仅仅在某个地方设置一些属性并在其他地方立即产生效果是不可能的。像.Renviron和.Rprofile这样的解决方案只有在R启动时才被读取,并且程序看到的环境变量在启动时被冻结。您必须编写自己的函数来返回“当前”访问令牌。该函数可以跟踪上次调用它的时间,并在需要时刷新。该函数可以像在.Rprofile中一样,在R会话中共享。
consumer_key <- "EXAMPLE_ACCESS_KEY"

refresh_token <- readRDS("path/to/refresh_token.rds") #an absolute path

new_access_token <- function(){
        rameritrade::td_auth_accessToken(consumerKey = consumer_key, refreshToken = refresh_token)
}

options("td_access_token" = new_access_token())