Shiny Dashboard中的数据抑制

3
我对使用R,更不用说shiny仪表板都非常陌生,但我有一个需要使用它的项目。我的目标是找到一种方法来抑制输出结果中的特定数量。 我目前有一个仪表板,其中有几个selectInputs可以过滤表格的结果。例如,用户可以按特定的县,年龄组和性别进行过滤,然后会收到包含所有这些结果的表格。假设用户这样做并收到了少于30个结果,这就是我需要仪表板响应的地方,不提供结果,甚至可能提示用户(只抑制数据也可以)。
我正在使用的数据库非常大,抑制操作将最终降低整体数据质量。我的想法是需要在服务器端使用某些东西,基本上说当过滤结果> 30时不显示。
如果需要更多澄清,请告诉我,并为缺乏R知识而提前道歉。
谢谢!
1个回答

0
在您的服务器上,您正在生成类似以下内容的输出表格:
output$table <- renderDataTable({ df %>% filter(var1 == "input$var1" & 
                                                var2 == "input$var2") })

如果在uinrow(output$table) < 30,你需要返回一个错误信息。

因此,我建议在你的服务器和ui中都使用ifelse来处理这些情况。例如:

服务器

table_react <- reactive({ 
    temp <- df %>% filter(var1 == "input$var1" & 
                          var2 == "input$var2")
    ifelse(nrow(temp) >= 30, temp, NULL) })

output$table <- renderDataTable({ table_react() })

ui

ifelse(table_react() == NULL,
       textOutput("Your selections result in a table with < 30 entries. Please try again."),
       dataTableOutput("table"))

有没有办法在闪亮的仪表板内共享代码?我很难理解一切是如何运作的,以及应该放在哪里。我目前收到了“找不到对象'output'”的错误消息。 - Bushwick2019
那个错误信息似乎与这个问题无关,它表明你在一个函数中要求一个名为 output 的变量,但该变量在其他地方没有定义。如果没有看到你的实际代码,或者最好是最小可复现示例,很难提供帮助。你能否尝试编辑你的问题,包括一个可重现的示例呢? - Rich Pauloo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接