Я новичок в R и у меня есть этот код в Ui.R:R блестящая: значение checkboxGroupInput
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Test 1"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput("sex", "sex", c("Men", "Women")),
textOutput("number")
),
mainPanel(
)
)
))
И этот код в Server.R:
server <- shinyServer(function(session, input, output) {
observeEvent(input$sex, {
if (input$sex == "Men"){s<-1}
number<-as.numeric(s)
if (input$sex == "Women"){s<-2}
number<-as.numeric(s)
if (input$sex == "Men" & input$sex == "Women"){s<-5}
number<-as.numeric(s)
if (is.null(input$sex)) {s<-10}
number<-as.numeric(s)
output$number<-renderText({number})
})
})
Итак, я дон «Не понимаю, почему« число »не принимает значение 5, когда я проверяю оба флажка, и почему« число »не принимает значение 10, если снять галочку с обоих полей?
Если вы могли бы помочь мне разобраться, пожалуйста.
спасибо.
EDIT: как снять флажок checkboxGrouInput "dynamic"?
library(shiny)
ui <- shinyUI(fluidPage(
titlePanel("Test 1"),
sidebarLayout(
sidebarPanel(
checkboxGroupInput(inputId = "sex", label = "sex",choices =
c("Men", "Women", "Children")),
textOutput("number")
),
mainPanel(
checkboxGroupInput(inputId = "dynamic", label = "", choices =
list("Answer 1"="01", "Answer 2"="02",
"Answer 3"="03", "Answer 4"="04",
"Answer 5"="05", "Answer 6"="06",
"Answer 7"="07", "Answer 8"="08",
"Answer 9"="09", "Answer 10"="10",
"Answer 11"="11", "Answer 12"="12"))
)
)
))
И Server.R:
server <- shinyServer(function(session, input, output) {
output$number<-renderText({
if (is.null(input$sex)){return(10)
updateCheckboxGroupInput(session,"dynamic",selected=character(0))}
men <- "Men" %in% input$sex
women <- "Women" %in% input$sex
children <- "Children" %in% input$sex
if (men & women & children){
s <- 8
updateCheckboxGroupInput(session,"dynamic",
selected=list("01","02","03","04","05","06",
"07","08","09","10","11","12"))
} else if (men & women){
s <- 5
updateCheckboxGroupInput(session,"dynamic",
selected=list("01","02","03","04","05","06","07","08"))
} else if (men){
s <-1
updateCheckboxGroupInput(session,"dynamic",
selected=list("01","02","03","04"))
} else if (women){
s <-2
updateCheckboxGroupInput(session,"dynamic",
selected=list("05","06","07","08"))
} else if (children) {
s <- 3
updateCheckboxGroupInput(session,"dynamic",
selected=list("09","10","11","12"))
}
return(as.numeric(s))
})
})
Спасибо очень очень много.
О великий! Большое спасибо Рон за ваши объяснения. Теперь я лучше понимаю. Еще один вопрос: я должен добавить одну ячейку в поле checkboxGroupInput: children. Как я могу отличить выбор: мужчины-женщины/мужчины-дети/женщины-дети, как длина одинакова? Еще раз спасибо. –
См. Обновленный код. Есть более элегантные способы сделать это, но это следует за идеями в вашем коде. –
Большое спасибо Рон за помощь. Ты король. Но как только я закончил свой код, у меня все еще есть небольшая проблема с отменой выбора checkboxGroupInput «dynamic», когда ни один из полей checkboxGroupInput «sex» не проверен. Я попробовал "selected = NULL, FALSE и character (0), но никто из них не работает. Вы знаете, почему? См. Мой отредактированный код. Еще раз спасибо Рон. –