8

我在侧面板中有一系列复选框,在 a 中定义如下sidebarPanel

sliderInput("days", 
                "Days to monitor:", 
                min = 1, 
                max = 50, 
                value = 5),
    checkboxInput("display_CMC", "Carolinas Medical Center", TRUE),
    checkboxInput("display_MariaParham", "Maria Parham", TRUE),
    checkboxInput("display_WakeMed", "Wake Med", TRUE)

我想以编程方式将这些结果转换为字符向量(例如,如果我有一个带有名称的 checkboxInput 'display_我希望它自动解析结果)。为此,我尝试了:

displayIdx <- grep( "display_", names(input) )
facilityCode_keep <- names(input)[ displayIdx ][ input[ displayIdx ] ]

不幸的是,这导致:

Error: Single-bracket indexing of reactivevalues object is not allowed.

两个问题:

  1. 如何将一系列checkboxInputs 转换为字符向量?
  2. 不允许单括号索引是怎么回事。如果我试图分配给 ,我可以理解input,但我不是。
4

1 回答 1

10

如何将一系列复选框输入转换为字符向量?

您可以使用双括号索引。但在这种情况下,您可能会考虑改用checkboxGroupInput函数,它返回所选值的字符向量。

为什么不单括号索引?

单括号索引是子集,而双括号索引是元素检索(或类似的东西)。输入对象更像是一个地图/哈希/字典/环境,而不是一个命名向量,所以子集实际上没有意义。(同样,你不能对 R 的环境对象进行单括号索引,你只能双括号索引。)

于 2013-05-20T17:47:19.170 回答