未选中时 R Shiny checkboxGroup 过滤器

R Shiny checkboxGroup filter when unchecked

我在用于子集数据的 shinydashboard 侧面板上有一系列分组的复选框。一组的所有栏都有一个选中的框。最后一组只有一个选项,默认未选中。它指向数据集上的二进制变量 (0, 1)。如果未选中,则不应应用任何过滤器,如果选中,则它在 1 值上进行子集化。

到目前为止我在 ui

中有这个
checkboxGroupInput("patFilt", 
                   label = h5("Filter by patient cohort"),
                   choices = c("Patient cohort" = 1),
                   selected = 0,
                   width = "100%")

在我的 server.R 我有

subsetArg <- reactive(list(
    input$group1,
    input$group2,
    input$group3,
    etc.,
    ifelse(is.null(input$patFilt), c(0, 1), 1)
  ))

子集化是在函数中完成的,subsetArg 传递参数。

但是,对于这个单个复选框,默认选项只有 returns 标记为 0 的观察值,直到选中该框然后它正确地 returns 标记为 1 的观察值。有趣的是,如果我更改 c(0, 1) 到 c(1,0) 未选中的选项 returns 观察标记为 1。因此 subsetArg 仅返回向量中的第一个值。

当有两个复选框都被选中为默认值时,我可以使用它,但是当未选中时我无法使单个复选框起作用。

我如何获得它以便在取消选中该复选框时返回所有观察结果?

谢谢

使用

解决

if(is.null(input$patFilt)) c(0,1) 否则 1

不知道为什么 ifelse() 不起作用。

我没有要评论的声誉点数,所以我不得不留下这个作为答案:ifelse 被矢量化并且 returns 结果与表达式的形状相同。

另一种说法是:ifelse() != if(){}else{}