繁体   English   中英

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.RI 中有

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

子集在一个函数中完成,子集参数传递参数。

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

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

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

谢谢

解决了使用

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

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

我没有要评论的声誉点,所以我必须把它作为答案: ifelse 被矢量化并返回与表达式相同形状的结果。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM