【问题标题】:generically populate tabItems in dashboardBody通常在dashboardBody 中填充tabItems
【发布时间】:2018-08-21 19:37:34
【问题描述】:

我想一般地生成仪表板菜单项,以允许在给定的 Shiny 应用程序中进行社区贡献(使用仪表板)。 这个想法是依赖一些约定,并将个人贡献放在这样的目录结构中:

shinyApp/ 与主框架 shinyApp/contributions/user1/ui.R shinyApp/contributions/user1/server.R

我将在哪里创建例如在贡献/下的每个“ui.R”文件中都有一个名为menuList的列表,可以使用:

uiFiles = dir(path = "contributions", pattern = "ui.R", full.names = TRUE, recursive = TRUE)
allMenus = list()
for(fp in uiFiles){
  source(fp)
  allMenus = list(allMenus, menuList)
}
...
shinyUI(dashboardPage(..., dashboardSidebar(allMenus), 
   dashboarBody(**???**)))

贡献下的 ui.R 看起来像这样:

menuList =   list(    
  menuItem("Subcluster analysis", tabName = "subcluster", startExpanded = FALSE,
           menuSubItem("analysis", tabName = "dge")
  ),
  menuItem("Tools", tabName = "tools", startExpanded = FALSE,
           menuSubItem("pheatmap", tabName = "HeatMap")
  )
)

这确实有效(如果dashboardBody 中的tabItems 是已知的)。我现在遇到的问题是填充dashboardBody(tabItems(...))

在服务器端(到目前为止我还没有解决)我没有预见到任何问题,因为我可以从 R 源或“.RData”文件加载/获取输出变量和函数。

如果有针对 tabItems 问题的解决方案,或者有迄今为止我还没有看到的更好的解决方案,请告诉我。

【问题讨论】:

    标签: r shiny shinydashboard


    【解决方案1】:

    进一步挖掘后,我得到了以下解决方案:

    事实证明,我可以创建一个选项卡列表并使用 tags$div 使用该列表:

    inputTab = tabItem(...)
    nextTab = tabItem(...)
    allTabs = list(inputTab, nextTab)
    ...
    dashboardBody(
      tags$div(
        allTabs,
        class = "tab-content"
      )
    

    【讨论】:

      猜你喜欢
      • 2018-05-20
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 1970-01-01
      • 2015-08-05
      • 2019-07-28
      • 1970-01-01
      • 2015-06-18
      相关资源
      最近更新 更多