Интересно, почему все мои флажки не отмечены этим кодом?R shiny updateCheckboxGroupInput не работает должным образом
У меня есть 1 checkboxGroupInput с именем «county» с 3 флажками и еще один с именем «dynamic» с 33 флажками. И мне интересно, почему, когда я проверяю два или три флажка «county» checkboxGroupInput, зависимые флажки в «динамическом» флажкеGroupInput не проверяются. Он работает хорошо, только если один флажок установлен.
Большое спасибо за помощь.
Это Server.R:
observeEvent(input$dynamic_county, {
if(is.element((input$dynamic_county),("South")))
{updateCheckboxGroupInput(session, inputId = "dynamic", selected =
list("02","03","05","06","09","13","16","17","18","21","28","29",
"32"))}})
observeEvent(input$dynamic_county, {
if(is.element((input$dynamic_county),("North")))
{updateCheckboxGroupInput(session, inputId = "dynamic", selected =
list("01","04","07","08","10","11","12","19","22","23","24","25","26",
"27","30","31","33"))}})
observeEvent(input$dynamic_county, {
if(is.element((input$dynamic_county),("East")))
{updateCheckboxGroupInput(session, inputId = "dynamic", selected =
list("14","15","20"))}})
Еще раз спасибо.
@ Warmoverflow, спасибо за предложение, но он не работает, я попытался это:
observeEvent(input$dynamic_county, {
if(is.element((input$dynamic_county),("South")))
{updateCheckboxGroupInput(session, inputId = "dynamic", selected =
list("02","03","05","06","09","13","16",
"17","18","21","27","28","29","32"))}
if(is.element((input$dynamic_county),("North")))
{updateCheckboxGroupInput(session, inputId = "dynamic", selected =
list("01","04","07","08","10","11","12","19",
"22","23","24","25","26","27","30","31","33"))}
if(is.element((input$dynamic_county),("East")))
{updateCheckboxGroupInput(session, inputId = "dynamic", selected =
list("14","15","20"))}
})
И я попробовал это тоже:
observeEvent(input$dynamic_county, {
ifelse((is.element((input$dynamic_county),
("South"))),updateCheckboxGroupInput(session, inputId = "dynamic",
selected = list("02","03","05","06","09","13","16",
"17","18","21","27","28","29","32")),
ifelse((is.element((input$dynamic_county),
("North"))),updateCheckboxGroupInput(session, inputId = "dynamic",
selected = list("01","04","07","08","10","11","12","19",
"22","23","24","25","26","27","30","31","33")),
ifelse((is.element((input$dynamic_county),
("East"))),updateCheckboxGroupInput(session, inputId = "dynamic",
selected = list("14","15","20")),
updateCheckboxGroupInput(session, inputId = "dynamic",selected =
NULL))))})
Если я проверяю 2 или 3 проверки коробки, выполняется только один из них.
У вас есть идея о происхождении проблемы, пожалуйста?
Еще раз спасибо.
EDIT:
я понял, что dynamic_choices для маркировки, поэтому я включил свои окончательные метки, но он не работает. Я так разочарован, что понял, что не понял. Вот что я сделал:
library(shiny)
library(stringr)
dynamic_choices = c("01. Bélep", "02. Boulouparis", "03. Bourail",
"04. Canala", "05. Dumbéa", "06. Farino",
"07. Hienghène", "08. Houaïlou", "09. Ile des Pins",
"10. Kaala Gomen", "11. Koné", "12. Koumac",
"13. La Foa", "14. Lifou", "15. Maré",
"16. Moindou", "17. Mont Dore", "18. Nouméa",
"19. Ouégoa", "20. Ouvéa", "21. Païta",
"22. Poindimié", "23. Ponérihouen", "24. Pouébo",
"25. Pouembout", "26. Poum", "27. Poya",
"28. Sarraméa", "29. Thio", "30. Touho", "31. Voh",
"32. Yaté", "33. Kouaoua")
selection = list("Province Nord"=c("01. Bélep", "04. Canala",
"07. Hienghène", "08. Houaïlou", "10. Kaala Gomen",
"11. Koné", "12. Koumac", "19. Ouégoa", "22. Poindimié",
"23. Ponérihouen", "24. Pouébo", "25. Pouembout",
"26. Poum", "27. Poya", "30. Touho", "31. Voh",
"33. Kouaoua"),
"Province Sud"=c("02. Boulouparis", "03. Bourail",
"05. Dumbéa", "06. Farino", "09. Ile des Pins",
"13. La Foa", "16. Moindou", "17. Mont Dore",
"18. Nouméa", "21. Païta", "28. Sarraméa",
"29. Thio", "32. Yaté"),
"Province des Iles Loyauté"=c("14. Lifou",
"15. Maré","20. Ouvéa"))
ui <- shinyUI(fluidPage(
titlePanel("Update CheckboxGroupInput"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("dynamic_provinces", "Provinces", c("Province
Nord", "Province Sud", "Province des Iles Loyauté")),
checkboxGroupInput("dynamic", "Communes", dynamic_choices)
),
mainPanel(
)
)
))
И код Server.R:
server <- shinyServer(function(session, input, output) {
observeEvent(input$dynamic_provinces, {
selected = c()
for (s in input$dynamic_provinces) {
selected = c(selected, selection[[s]])
}
if (is.null(selected)) {
selected = character(0)
}
updateCheckboxGroupInput(session, "dynamic", selected = selected)
}, ignoreNULL = FALSE)
})
Большое спасибо.
Вместо того, чтобы иметь три элемента наблюдения, у вас должен быть только один и поместить в него все операторы if. –
Основная проблема заключается в том, что при проверке нескольких полей в первой группе вам необходимо объединить все соответствующие параметры во второй группеboxbox вместе. См. Мой ответ –