如何将2个不同的闪亮应用集成在一个中

时间:2016-03-29 17:47:39

标签: r shiny

我有两个使用ui和服务器组件的闪亮应用程序。我需要创建一个应用程序,并能够使用选项卡打开每个应用程序。单击一个选项卡将显示该应用程序。

第一个应用程序是这样的:

ui <- pageWithSidebar(....)
server <- function(input, output,session) {....}

第二个应用程序是这样的:

 shinyUI(....)
server <- function(input, output, session) {.....}

我如何创建一个应用并从一个应用中的标签中引用这些应用?

1 个答案:

答案 0 :(得分:1)

据我所知,这可以通过两种方式实现。

  1. 简单闪亮的应用程序:
  2. 您可以使用tabPanel(title, ...)函数创建标签,然后将所有tabPanel()包装在tabsetPanel()函数中。

    因此,在您的情况下,您可以将第一个应用的所有UI元素放在第一个tabPanel('unique_title')内,依此类推。

    这将帮助您创建多个可独立查看的部分。

    您可以参考这两个链接了解更多信息 http://shiny.rstudio.com/reference/shiny/latest/tabPanel.html

    1. @Michal建议使用shinydashboard
    2. shinydashnoard是您必须安装的另一个软件包才能使用闪亮的此功能。它基本上有一个预定义的结构,包括标题,侧边栏和正文。

      基本结构如下所示:

      library(shiny)
      library(shinydashboard)
      
      ui <- dashboardPage(
        dashboardHeader(),
        dashbaordSidebar(),
        dashboardBody()
      )
      
      server <- function(input,output,server){...}
      

      通常,dashboardSidebar()用于导航。但是,它可以包含menuItem(),其行为类似tabPanel()中的标签。

      对于您的情况,您可以在menuItem()内添加多个sidebarMenu(),如下所示

      更新的代码

      library(shiny)
      library(shinydashboard)
      
      ui <- dashboardPage(
        dashboardHeader(),
        dashboardSidebar(
          sidebarMenu(
            menuItem("first_app", tabName = "first_app"),
            menuItem("second_app", tabName = "second_app")
          )
        ),
        dashboardBody(
          tabItems(
            tabItem(tabName = "first_app",
                    h2("First App Content")
            ),
            tabItem(tabName = "second_app",
                    h2("Second App Content"))
          )
        )
      )
      
      server <- function(input,output,server){}
      
      shinyApp(ui,server)
      

      这将创建一个包含2个菜单项的基本仪表板页面。

      您还可以参考以下链接,了解有关shinydashboard结构的更多信息 https://rstudio.github.io/shinydashboard/structure.html

      我希望这会有所帮助:)