我有两个使用ui和服务器组件的闪亮应用程序。我需要创建一个应用程序,并能够使用选项卡打开每个应用程序。单击一个选项卡将显示该应用程序。
第一个应用程序是这样的:
ui <- pageWithSidebar(....)
server <- function(input, output,session) {....}
第二个应用程序是这样的:
shinyUI(....)
server <- function(input, output, session) {.....}
我如何创建一个应用并从一个应用中的标签中引用这些应用?
答案 0 :(得分:1)
据我所知,这可以通过两种方式实现。
您可以使用tabPanel(title, ...)
函数创建标签,然后将所有tabPanel()
包装在tabsetPanel()
函数中。
因此,在您的情况下,您可以将第一个应用的所有UI元素放在第一个tabPanel('unique_title')
内,依此类推。
这将帮助您创建多个可独立查看的部分。
您可以参考这两个链接了解更多信息 http://shiny.rstudio.com/reference/shiny/latest/tabPanel.html
shinydashboard
: 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
我希望这会有所帮助:)