1
我是新来的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?
如果你能帮我理解请。
非常感谢。
编辑:如何取消选择checkboxGrouInput“动态”?
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))
})
})
非常感谢你非常。
哦,太好了!非常感谢Ron的解释。我现在明白好多了。还有一个问题:我必须在checkboxGroupInput:children中添加一个框。我如何区分选择:男性 - 女性/男性 - 儿童/女性 - 儿童的长度是相同的?再次感谢你。 –
查看更新的代码。有更多优雅的方法可以做到这一点,但是这个方法遵循代码中的想法。 –
非常感谢Ron的帮助。你是国王。但是,一旦我完成了我的代码,当checkboxGroupInput“sex”的框没有被选中时,我仍然有一个关于取消选择checkboxGroupInput“dynamic”的小问题。我试过了“selected = NULL,FALSE和character(0),但没有一个能够工作,你知道为什么吗?请看我编辑的代码,再次感谢Ron。 –