Обновление выбора переключателя в Shiny R - PullRequest
1 голос
/ 19 июня 2020

Я новичок в shiny и мне нужно отфильтровать выбор радиокнопки на основе выбора из предыдущего переключателя. В конечном итоге выбор из второго переключателя будет использоваться для создания интерактивного графика… но я не уверен, как отформатировать функцию «updateRadioButtons».

Разрешите пояснить желаемый результат. В приведенном ниже примере радиокнопка «сайт» будет содержать «a» и «b» для выбора. Если выбран «сайт a», то я хотел бы, чтобы параметры под переключателем «образец» отображали выбор для образцов «1, 2, 3», а если выбран «сайт b», я бы хотел, чтобы параметры под «образцом» », Чтобы отобразить выбор для выборок« 4, 5, 6 ».

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

Заранее благодарим за любую помощь. Береги себя.

site <- c('a','a','a','b','b','b')

sample <- c(1, 2, 3, 4, 5, 6)

data1 <- data.frame(site, sample)

library(shiny)

ui <- fluidPage(

  sidebarPanel(
    radioButtons("site", "What site I want",
                 choices = unique(data1$site)),

    radioButtons("sample", "Samples at site",
                unique(data1$sample))),

)

server <- function(input, output, session) {
  observeEvent(input$site,{
    updateRadioButtons(session, "sample",
                       choices = input$sample)})
}

shinyApp(ui, server)

1 Ответ

1 голос
/ 19 июня 2020

это сработало в моей системе. Ваш код использует текущий выбор input$sample, который является только одним значением. Вместо этого используйте это значение, чтобы выбрать правильный вектор выбора.

observeEvent(input$site, {
    Choices <- data1$sample[data1$site == input$site]
    updateRadioButtons(session, "sample", choices = Choices)
  })

Дальнейшее наблюдение: вы инициализируете второй переключатель со всеми значениями 1:6, потому что именно это вернет unique(data1$sample). Это будет мгновенно перезаписано, когда 'ObservationEvent (input $ site ... is called. For a brief instant, however, users should see 1: 6 . You can improve by initializsing the choices data1 $ sample [data1 $ site == "a"] and setting the argument ignoreInit of compareEvent to TRUE` . Это установит правильное значение и уменьшит мерцание при запуске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...