Создать блестящее меню боковой панели на панели данных - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь создать пункты меню под боковой панелью панели автоматически из таблицы, но безуспешно. Я использую код ниже.

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 метки содержит метки и идентификатор, который мне нужно использовать в меню. Я бегу за цикл. Как я должен это делать?

1 Ответ

1 голос
/ 29 мая 2019
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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...