一般填充dashboardBody中的tabItems

时间:2018-03-13 13:53:51

标签: r shiny shinydashboard

我想通常生成仪表板menuItems以允许在给定的Shiny应用程序(使用仪表板)中进行社区贡献。 我们的想法是依赖于某些约定,并在这样的目录结构中放置个人贡献:

shinyApp /与主框架 shinyApp /来稿/ USER1 / ui.R shinyApp /捐款/ 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问题的解决方案,或者有一个我目前尚未见过的更好的解决方案。

1 个答案:

答案 0 :(得分:1)

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

事实证明我可以创建一个标签列表,并使用标签$ div:

来使用该列表
inputTab = tabItem(...)
nextTab = tabItem(...)
allTabs = list(inputTab, nextTab)
...
dashboardBody(
  tags$div(
    allTabs,
    class = "tab-content"
  )