【问题标题】:R Shiny : how to use checkboxGroupInput values for a search in a table?R Shiny:如何使用 checkboxGroupInput 值在表中进行搜索?
【发布时间】:2017-02-08 11:05:55
【问题描述】:

我是 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 只显示我检查的最后一组的汽车数量。 那么,如何获取所有选中框的汽车数量?

对不起我的英语。

非常感谢。

【问题讨论】:

  • 太棒了!有用 !非常感谢 GyD 的所有这些解释。我现在明白了。祝你有美好的一天。
  • 没问题。如果对您有帮助,您可以接受带有复选标记的答案,以便其他用户知道问题已解决。祝你有美好的一天

标签: r checkbox shiny


【解决方案1】:

使用%in% 运算符:a&lt;-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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-14
    • 2016-12-03
    • 1970-01-01
    相关资源
    最近更新 更多