r - 在后台加载 Shiny 的 tabPanel

标签 r shiny shiny-server shinyjs

我 Shiny 的 ui.R 中有几个 tabPanel() block ,它们都需要一些时间来加载。但是,它们似乎都被视为单独的页面,并且只有在从导航栏中选择 tabPanel() 后才开始呈现。

有没有办法在后台加载初始选项卡后预加载这些页面?

我试图在我的服务器函数的底部包含以下内容:

sapply(names(outputOptions(output)),function(x) outputOptions(output, x, suspendWhenHidden = FALSE))

这适用于观察者或 react 上下文之外的输出变量,但不适用于内部变量。

对维克多普的回应

我尽量避免将 renderPlot 放在 observer 调用中,但我设置了一个 reactiveVariable data.frame通过文件轮询调用,然后需要对其进行子集化和转换。

该转换用于一系列绘图。在结构上更容易将 reactiveValue 放在 observer 中,子集一次,然后让所有生成的图使用该非 react 性子集。

  Data = reactivePoll(5479,
               session,
               checkFunc = function() {
                 if (file.exists(orderStatsPath))
                   file.info(orderStatsPath)$mtime[1]
                 else
                   ""
               },
               valueFunc = function() getData(orderStatsPath)
  )

  observe({

    Data = Data()
    Data = subset(Data, subset = Date >= Sys.Date() - 14)
    Data$Date = as.character(Data$Date)
    output$slippageRootTotalUSD = shiny::renderTable({
      result = dcast(Data,
                     Date ~ Symbol,
                     value.var = "slippageRootTotalUSD",
                     na.rm = T,
                     fun = sum,
                     margins = c("Date","Symbol"))

      rownames(result) = result[,1]
      result = signif(result[,-1],5)
      result
    },
    rownames = TRUE,
    hover = TRUE,
    digits = 2,
    spacing = 's'
    )

    output$SizeUSD = shiny::renderTable(
      {
        result = dcast(Data,
                       Date ~ Symbol,
                       value.var = "SizeUSD",
                       na.rm = T,
                       fun = sum,
                       margins = c("Date","Symbol"))

        rownames(result) = result[,1]
        result = round(result[,-1],0)

        result
      },
      rownames = TRUE,
      hover = TRUE,
      digits = 0,
      spacing = 's'
    )
    sapply(names(outputOptions(output)),function(x) outputOptions(output, x, suspendWhenHidden = FALSE))
 }

最佳答案

看看 ?outputOptions,您可能想使用它:

# Disable suspend for output$myplot
outputOptions(output, "myplot", suspendWhenHidden = FALSE)

关于r - 在后台加载 Shiny 的 tabPanel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714247/

相关文章:

r - 更改 Shiny 服务器目录的默认路径

shiny-server - 在 shiny-server 上托管多个管道工 API

r - R 中具有相同位置索引的向量值的组合

删除 gtsummary 线性回归表的 p 值列

r - 如何使用基于 nnet::multinom() 模型的 {ggeffects} 获得预测概率图的置信区间?

r - 在 ggplotly 中保持 x 和 y 比例相同(所以方形图)

r - 在 R Shiny 中更新选择输入而不重置

r - 将信息打印到shiny-server日志中

r - 在 Shiny 应用中跟踪用户事件

r - ff 对象长度在 64 位 Windows 中被限制为 32 位整数