Входные данные Shiny Dashboard внутри проблем MenuItems

Я новичок в блестящих приборных панелях, и я пробую свои силы в создании простой приборной панели. Я пытаюсь собрать панель инструментов, которая в основном будет использовать различные алгоритмы кластеризации и показывать, как они работают.

У меня есть пункт меню для общей темы ветвления, а затем элементы ввода в этих меню, которые определяют параметры для алгоритмов кластеризации.

Моя проблема в том, что я не могу получить вывод на свой экран. Я не могу отображать графики даже для просмотра заголовков полей, которые я разместил внутри tabItems. Кажется, это происходит, когда я помещаю подпункт в один из пунктов меню. Я не уверен, почему.

Прикреплен мой сценарий ui.R и сценарий server.R.

файл ui.R: файл ui.R

файл server.R:

файл server.R

Любая помощь в этом вопросе будет высоко оценена.


person DB_newtoshinydashboard    schedule 24.03.2017    source источник


Ответы (1)


Итак, насколько я понимаю, проблема связана с тем, что вы поместили радиокнопки в файл menuItem. Если вы хотите показывать radioButtons только тогда, когда активна вкладка kclustering, вам нужно обернуть radioButtons в conditionalPanel. Это будет выглядеть примерно так:

library(shinydashboard)

ui <- dashboardPage(
   dashboardHeader(title = "Bla"),
   dashboardSidebar(
     sidebarMenu(
       id = "tabs",
       menuItem(
         "K-clustering",
         tabName = "kclustering",
         icon = icon("cogs")),
       conditionalPanel(
         "input.tabs == 'kclustering'",
         radioButtons("technique", "Technique Choice", 
                 c("K-Means" = "kmeans",
                   "K-Medians" = "kmedians",
                   "K-Medoids" = "kmedoids"),
                 select = "kmedians")
         ),
       menuItem("DBSCAN", tabName = "dbscan")
     )
 ),
 dashboardBody(
   tabItems(
     tabItem("kclustering",
       fluidRow(
         box(plotOutput("step1"))
       ))
      )
))

server <- function(input, output) {

  output$step1 <- renderPlot({

    hist(rnorm(5000))

  })

}

runApp(shinyApp(ui, server))

В этом случае важно установить аргумент id объекта sidebarMenu, чтобы иметь возможность сформулировать свое условие. Суть такова: не помещайте свои radioButtons, sliderInput и textInput в объекты menuItem, а в сам объект sidebarMenu.

person jess    schedule 26.03.2017
comment
проблема с этим подходом заключается в том, что приятный эффект скольжения элемента меню теряется. - person Chamberlain Foncha; 04.03.2019