gpt4 book ai didi

R Shiny : checkboxGroupInput value

转载 作者:行者123 更新时间:2023-12-04 00:06:42 25 4
gpt4 key购买 nike

我是 R 新手,我在 Ui.R 中有这段代码:

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))
})
})

非常感谢。

最佳答案

在您的代码中需要考虑的几点:

1) 如果同时选择了男性和女性,则 input$sex 的长度=2 (chr [1:2] "Men""Women")。这条线行不通。

(input$sex == "Men" & input$sex == "Women")

2) 在应用程序初始化时 input$sex 为 NULL,并且您不能像在 if 语句中那样使用 null

if (input$sex == "Men") 

3) 你不需要observeEvent。 renderText 对 input$sex 有反应。

我对你的代码做了一些修改

library(shiny)

ui <- shinyUI(fluidPage(

titlePanel("Test 1"),

sidebarLayout(
sidebarPanel(
checkboxGroupInput(inputId = "sex", label = "sex",choices = c("Men", "Women")),
textOutput("number")
),

mainPanel()
)
))

server <- shinyServer(function(session, input, output) {

output$number<-renderText({

if (is.null(input$sex) ){return(10)}

if (length(input$sex) ==1){
if (input$sex == "Men"){
s<-1
} else if (input$sex == "Women"){
s<-2
}
} else{
return(5)
}

return(as.numeric(s))
})
})

shiny::shinyApp(ui, server)

更新 - 如果您有更多选择

library(shiny)

ui <- shinyUI(fluidPage(

titlePanel("Test 1"),

sidebarLayout(
sidebarPanel(
checkboxGroupInput(inputId = "sex", label = "sex",choices = c("Men", "Women", "Children")),
textOutput("number")
),

mainPanel()
)
))

server <- shinyServer(function(session, input, output) {

output$number<-renderText({

if (is.null(input$sex) ){return(10)}

men <- "Men" %in% input$sex
women <- "Women" %in% input$sex
children <- "Children" %in% input$sex

if (men & women & children){
s <- 8
} else if (men & women){
s <- 5
} else if (men){
s <-1
} else if (women){
s <-2
} else if (children) {
s <- 3
}

return(as.numeric(s))
})
})

shiny::shinyApp(ui, server)

关于R Shiny : checkboxGroupInput value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40193240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com