首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何在全球范围内在启动时将R度量金融日历加载到“load”中?

我如何在全球范围内在启动时将R度量金融日历加载到“load”中?
EN

Stack Overflow用户
提问于 2022-04-21 14:12:05
回答 1查看 58关注 0票数 0

问题:

使用load_rmetrics_calenders()设置“全球”金融日历的最佳做法是什么?

背景:

这个问题是在找到可能的解决办法之前提出的。我正在使用我创建的函数,它使用{bizdays}包来确定特定的财务日期。我需要使用函数load_rmetrics_calenders()来启动/设置bizdayz::adjust.previous(..., cal = "Rmetrics/NYSE)中后续调用的日历。我知道我也可以使用一个球型设置来设置日历,但这在过去给了我一些问题。

我希望在golem实例的开头运行一次load_rmetrics_calenders() --而不是在函数中直接调用函数,这会使它慢一些。

Reprex:

代码语言:javascript
运行
复制
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

  • Execute

  • 在作为website/app

  • Embed的主页的golem模块的服务器中执行load_rmetrics_calenders()

#1:当前实现

代码语言:javascript
运行
复制
# 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

代码语言:javascript
运行
复制
# .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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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()

如果您使用的是

  • 产品,则可以使用链接GitHub代码中的run_app()方法.

如果您需要研究{golem}应用程序的行为以及运行时,我在这里有一个玩具示例https://github.com/ColinFay/golemexamples/tree/master/golemloadorder,它将让您知道什么时候运行/加载了东西。

干杯,科林

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71955953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档