问题:
使用load_rmetrics_calenders()设置“全球”金融日历的最佳做法是什么?
背景:
这个问题是在找到可能的解决办法之前提出的。我正在使用我创建的函数,它使用{bizdays}包来确定特定的财务日期。我需要使用函数load_rmetrics_calenders()来启动/设置bizdayz::adjust.previous(..., cal = "Rmetrics/NYSE)中后续调用的日历。我知道我也可以使用一个球型设置来设置日历,但这在过去给了我一些问题。
我希望在golem实例的开头运行一次load_rmetrics_calenders() --而不是在函数中直接调用函数,这会使它慢一些。
Reprex:
my_function<- function(stock = NULL, from = NULL, to = NULL, ...){
# Set Biz Calender
# bizdays::load_rmetrics_calendars(year = c(1950:2030), financial = TRUE)
# DEFENSIVES ---------------------------------------------------------------------------------------------------
# Assign `to` --> yesterdays close, will reset when close data comes in, 12am
to <- bizdays::adjust.previous(Sys.Date() - 1, cal = "Rmetrics/NYSE")我想在每次调用此函数时省略设置日历,或者在联机运行时在golemApp实例中调用它。
可能的答案:
当launched
golem模块的服务器中执行load_rmetrics_calenders()时#1:当前实现
# Just running the function within the `runApp()`
run_app <- function(
onStart = NULL,
options = list(),
enableBookmarking = NULL,
...
) {
#Configure financial calender
golem::cat_dev("Loading NYSE calender from Quantlib \n")
bizdays::load_quantlib_calendars(ql_calendars = "UnitedStates/NYSE", from = "1950-01-01", to = "2030-01-01")
golem::cat_dev("Done loading calender. \n")
# Configure global polished settings
polished_config()
reactlog::reactlog_enable()
with_golem_options(
app = brochureApp(
# Putting the resources here
golem_add_external_resources(),
# Add pages
welcomePage(),
# login(),
dashboard(),
# logout(),
terms(),
onStart = onStart,
options = options,
enableBookmarking = enableBookmarking,
wrapped = shiny::tagList
),
golem_opts = list(...)
)
}#2:编写脚本来运行,而不是从Docker调用runApp() ie
# .R file to be called instead of running run_app() explicitly
#Configure financial calender
golem::cat_dev("Loading NYSE calender from Quantlib \n")
bizdays::load_quantlib_calendars(ql_calendars = "UnitedStates/NYSE", from = "1950-01-01", to = "2030-01-01")
golem::cat_dev("Done loading calender. \n")
# Configure global polished settings
polished_config(...)
reactlog::reactlog_enable()
# Run app with the calendar loaded
run_app()发布于 2022-04-22 06:50:36
您可以在启动run_app()函数之前运行该函数,并将结果作为参数传递给run_app()乐趣。
例如:https://github.com/inrae/diades.atlas/blob/main/app.R#L30,这里,我构建了一系列元素,并将它们传递给run_app(),因此运行频率较低(这里,每次在RStudio连接中启动新应用程序时)。
如果您希望在每个闪亮的会话中启动该函数,也可以在服务器顶部设置(但我认为这不是您想要的)。
因此,它取决于您的部署逻辑:
如果您正在部署一个容器,则可以使用(伪代码):
build_stuff()。如果您使用的是
如果您需要研究{golem}应用程序的行为以及运行时,我在这里有一个玩具示例https://github.com/ColinFay/golemexamples/tree/master/golemloadorder,它将让您知道什么时候运行/加载了东西。
干杯,科林
https://stackoverflow.com/questions/71955953
复制相似问题