如果我将checkboxGroup定义为
checkboxGroupInput("checkGroup", label = h2("Data Sets"),
choices = list("Accounts Created" = 1, "Comments" = 2,
"Submissions" = 3, "Votes" = 4),
selected = NULL)
然后在服务器端,如何访问四个框的选择状态?是input$checkGroup[1]
,input$checkGroup[2]
等是否为0/1值?或input$checkGroup
变量长度是否仅包含所选值?非常困惑的是如何确定,例如,是否检查了第一个和第三个框......
答案 0 :(得分:1)
它们被视为一个字符向量,其长度等于复选框的数量。这是一个非常简单的闪亮应用程序,向您展示如何处理read
:
checkboxGroup
注意应用程序中的值是如何存储的(而不是标签)。因此,如果您选择library(shiny)
ui <- fluidPage(
checkboxGroupInput("checkGroup", label = h2("Data Sets"),
choices = list("Accounts Created" = 1, "Comments" = 2,
"Submissions" = 3, "Votes" = 4),
selected = NULL),
verbatimTextOutput("checkBoxText")
)
server <- function(input, output, session) {
output$checkBoxText <- renderText({input$checkGroup})
}
shinyApp( ui = ui, server = server, options = list(launch.browser = T) )
,"Accounts Created"
将包含input$checkGroup
而不是1
答案 1 :(得分:1)
checkboxGroupInput
的输出是一个向量。
当您想要同时选择多个元素时,可以使用它。
为了避免混淆(并避免让我们的反应在每次选择框时都有反应),它最好与动作按钮结合使用:
另外,有时我不想使用列表,而只是一个简单的向量,例如:
checkboxGroupInput("checkGroup", label = h2("Data Sets"),
choices = c("Accounts Created", "Comments",
"Submissions", "Votes"),
selected = NULL)
然后,您可以在服务器端处理具有不同值的字符向量,例如如果选择了前两个框,则input$checkGroup
可能等于c("Accounts Created", "Comments")
,依此类推。
也许我在回复以下SO问题时发布的代码可能会有所帮助R Shiny observeEvent issues
请注意,如果选择了许多元素,您需要有一个合适的治疗管道。例如,if
(或switch
)仅适用于当时的一个元素,如果您希望一次扫描输出向量一个元素,则它会起作用。如果您的治疗更复杂,您需要仔细考虑。
如果不清楚,请不要犹豫。