为了获得更多的控制,我在server.R中设置了UI,但是当在server.R中定义时,shinyDashboard不起作用。
这段代码起作用
library(shiny)
library(shinydashboard)
ui <- dashboardPage( dashboardHeader( ),
dashboardSidebar(),
dashboardBody() )
server <- shinyServer(function(input, output) { })
runApp(list(ui= ui, server = server))但是这个只是显示一个空的页面
ui <- uiOutput('dash')
server <- shinyServer(function(input, output) {
output$dash <- renderUI({
dashboardPage(dashboardHeader( ),
dashboardSidebar(),
dashboardBody() )
})
})
runApp(list(ui= ui, server = server))这是一个使用navBarPage的示例,它运行良好。
ui <- uiOutput('nav')
server <- shinyServer(function(input, output) {
output$nav <- renderUI({
navbarPage("App Title",
tabPanel("Tab 1"),
tabPanel("Tab 2") )
})
})
runApp(list(ui= ui, server = server))发布于 2016-08-09 23:51:09
我认为您不能只使用uiOutput,即创建仪表板。我假设您的目标是创建一个动态仪表板。为此,您需要在UI中定义标题、正文和边栏,并使用服务器上的renderMenu等函数来创建它。下面是一个使用服务器中定义的所有UI创建仪表板的示例。
ui <- dashboardPage(
dashboardHeader(title = "My Page"),
dashboardSidebar(sidebarMenuOutput("sideBar_menu_UI")),
dashboardBody(
uiOutput("body_UI"),
uiOutput("test_UI")
)
)
server <- shinyServer(function(input, output, session) {
output$sideBar_menu_UI <- renderMenu({
sidebarMenu(id = "sideBar_Menu",
menuItem("Menu 1", tabName="menu1_tab", icon = icon("calendar")),
menuItem("Menu 2", tabName="menu2_tab", icon = icon("database"))
)
})
output$test_UI <- renderUI ({
tabItems(
tabItem(tabName = "menu1_tab", uiOutput("menu1_UI")),
tabItem(tabName = "menu2_tab", uiOutput("menu2_UI"))
)
})
output$body_UI <- renderUI ({
p("Default content in body outsite any sidebar menus.")
})
output$menu1_UI <- renderUI ({
box("Menu 1 Content")
})
output$menu2_UI <- renderUI ({
box("Menu 2 Content")
})
})
runApp(list(ui= ui, server = server))在本例中,默认情况下不为侧栏选择菜单,body_UI的内容将始终可见。如果希望仪表板从特定菜单开始,请将sidebarMenu放在UI中。还可以删除body_UI。
https://stackoverflow.com/questions/38826893
复制相似问题