我在闪亮的仪表板侧面板上有一系列分组的复选框,用于子集数据。一组中的所有栏都选中了选定的框。最后一组只有一个选项,默认未选中。它指向数据集上的二进制变量 (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 仅返回向量中的第一个值。
当有两个复选框都默认选中时,我可以使用此功能,但在未选中时我无法使单个复选框工作。
如何获取它,以便在取消选中该复选框时返回所有观察结果?
谢谢
我没有声誉点来发表评论,所以我必须将此作为答案:ifelse 被向量化并返回与表达式形状相同的结果。
另一种说法是:
ifelse() != if(){}else{}
解决使用
if(is.null(input$patFilt)) c(0,1) else 1
不知道为什么
ifelse()
不起作用。