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

问题描述 投票:0回答:1

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

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

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

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

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

我如何创建一个应用程序并从一个应用程序内的选项卡引用这些应用程序?

r shiny
1个回答
1
投票

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

  1. 简单闪亮的应用程序:

您可以使用

tabPanel(title, ...)
函数创建选项卡,然后将所有
tabPanel()
包装在
tabsetPanel()
函数内。

因此,在您的情况下,您可以将第一个应用程序的所有 UI 元素放在第一个

tabPanel('unique_title')
中,依此类推。

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

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

  1. 正如@Michal建议的那样,使用
    shinydashboard

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

基本结构如下图:

library(shiny)
library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  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/struct.html

我希望这有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.