R Shiny:如何在表中使用checkboxGroupInput值进行搜索?

时间:2016-09-30 00:20:00

标签: r checkbox shiny

我是R和Shiny的初学者,我有一点问题。

如果你能帮忙的话。

例如,我已将变量Group添加到数据框" mtcars"以字符格式。现在我有3组汽车:123,具体取决于" mpg"每辆车的水平。

我为ui编了代码:

library(shiny)
shinyUI(pageWithSidebar(
headerPanel("Example"),
sidebarPanel(checkboxGroupInput("dynamic", "Cars", label = "GROUPS",
                              choices = c("Group 1" = "1",
                                          "Group 2" = "2",
                                          "Group 3" = "3")
)),

对于服务器:

library(shiny)
shinyServer(function(input, output) {

output$textDisplay <- renderText({    

a<-sum(mtcars$Group==input$dynamic)

a    
  })
})

当我只选中一个框时效果很好,但如果我检查多个框,则renderText仅显示我检查过的最后一组的车数。 那么,我怎样才能得到所有复选框的车数?

抱歉我的英文。

非常感谢。

1 个答案:

答案 0 :(得分:1)

使用%in%运算符:a<-sum(mtcars$Group ℅in℅ input$dynamic)

说明:

当您使用a == b时,R会多次复制较短的对象以适应较长对象的长度:

a <- 1:6
b <- 1:2
a == b
#[1]  TRUE  TRUE FALSE FALSE FALSE FALSE
# a    1     2     3     4     5     6
# b    1     2     1     2     1     2

如果较长对象的长度不是较短对象的倍数,则会收到以下警告消息:

a <- c(1, 2, 2, 1, 3)
b <- 1:2
a == b
#[1]  TRUE  TRUE FALSE FALSE FALSE
# a    1     2     2     1     3
# b    1     2     1     2     1
Warning message:
In a == b : longer object length is not a multiple of shorter object length

(注意输出也不对)

如果第一个参数与第二个元素中的任何一个匹配,则%in%运算符返回TRUE

a <- c(1, 2, 2, 1, 3)
b <- 1:2
a %in% b
#[1]  TRUE  TRUE  TRUE  TRUE FALSE
# a    1     2     2     1     3
# b   1,2   1,2   1,2   1,2   1,2