我在server.R中设置了UI以获得更多控制权,但在server.R中定义时,shinyDashboard不起作用.我使用navBarPage这个方法没有问题.
这段代码有效
library(shiny)
library(shinydashboard)
ui <- dashboardPage( dashboardHeader( ),
dashboardSidebar(),
dashboardBody() )
server <- shinyServer(function(input, output) { })
runApp(list(ui= ui, server = server))
Run Code Online (Sandbox Code Playgroud)
但这个只是显示一个空页
ui <- uiOutput('dash')
server <- shinyServer(function(input, output) {
output$dash <- renderUI({
dashboardPage(dashboardHeader( ),
dashboardSidebar(),
dashboardBody() )
})
})
runApp(list(ui= ui, server = server))
Run Code Online (Sandbox Code Playgroud)
这是一个使用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))
Run Code Online (Sandbox Code Playgroud)
我不认为你只能使用uiOutput创建仪表板.我假设你的目标是创建一个动态仪表板.为此,您需要在UI中定义标题,正文和侧边栏,并使用renderMenuSERVER 等函数创建它.下面是一个创建仪表板的示例,其中包含SERVER中定义的所有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))
Run Code Online (Sandbox Code Playgroud)
在此示例中,默认情况下未选择侧边栏的菜单,并且内容body_UI始终可见.如果您希望仪表板在特定菜单上启动,请将其sidebarMenu放入UI中.你也可以删除body_UI.
| 归档时间: |
|
| 查看次数: |
2001 次 |
| 最近记录: |