我想通常生成仪表板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问题的解决方案,或者有一个我目前尚未见过的更好的解决方案。
答案 0 :(得分:1)
在进一步挖掘后,我得到了以下解决方案:
事实证明我可以创建一个标签列表,并使用标签$ div:
来使用该列表inputTab = tabItem(...)
nextTab = tabItem(...)
allTabs = list(inputTab, nextTab)
...
dashboardBody(
tags$div(
allTabs,
class = "tab-content"
)