【问题标题】:Create shiny dashboard sidebar menu from dataframe从数据框创建闪亮的仪表板侧边栏菜单
【发布时间】:2019-05-29 21:57:35
【问题描述】:

我正在尝试从表格自动创建仪表板侧边栏下的菜单项,但没有成功。我正在使用下面的代码。

library(shiny)
library(shinydashboard)

header = dashboardHeader(title = "title")
sidebar = dashboardSidebar(sidebarMenuOutput("sidebarMenu"))
body = dashboardBody()

ui = dashboardPage(header, sidebar, body)


labels = data.frame(id = c(1,2,3),
                    name = c("lab1", "lab2", "lab3"))

server = function(input, output) { 

  output$sidebarMenu <- renderMenu({
    sidebarMenu(id="tabs",
                for (i in labels) {
                  menuItem(labels$name[i], tabName = labels$id[i])
                  })


  })
}


shinyApp(ui, server)

data.frame labels 包含我需要在菜单中使用的标签和 ID。我正在运行一个 for 循环。我该怎么做?

【问题讨论】:

    标签: r shinydashboard


    【解决方案1】:
    for (i in labels)
    

    此循环不起作用,因为您将始终获得数据框,而不是数据框的一行。无论如何,我没有让它与循环一起工作,我通常使用lapply 的组合将所有项目存储在一个列表中,并使用do.call 通过renderUI 函数对其进行可视化。

    library(shiny)
    library(shinydashboard)
    
    labels = data.frame(id = c(1,2,3),
                        name = c("lab1", "lab2", "lab3"))
    
    header = dashboardHeader(title = "title")
    sidebar = dashboardSidebar(sidebarMenu(id="mytabs",
                                        uiOutput("sidebar_menu_UI")))
    body = dashboardBody()
    
    ui = dashboardPage(header, sidebar, body)
    
    
    server = function(input, output) { 
    
        output$sidebar_menu_UI <- renderUI({
    
            myTabs = lapply(1:nrow(labels) , function(i) {
    
                menuItem(labels$name[i], tabName = labels$id[i])  
            })
    
            print(myTabs)
    
            do.call(sidebarMenu, myTabs)
        })
    }
    
    
    shinyApp(ui, server)
    

    【讨论】:

      猜你喜欢
      • 2018-09-25
      • 2020-12-15
      • 2018-12-24
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 2018-06-24
      • 2016-11-11
      相关资源
      最近更新 更多