R 未选中时闪亮的复选框组过滤器

问题描述 投票:0回答:2

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

到目前为止我在用户界面中有这个

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

在我的服务器中。R我有

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

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

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

当有两个复选框都默认选中时,我可以使用此功能,但在未选中时我无法使单个复选框工作。

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

谢谢

r checkbox shiny shinydashboard
2个回答
1
投票

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

另一种说法是:

ifelse() != if(){}else{}


0
投票

解决使用

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

不知道为什么

ifelse()
不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.