我对使用 R 还很陌生,更不用说 Shiny 的仪表板了,但我有一个项目需要使用它。我想要完成的是某种抑制输出中特定数量结果的方法。我目前有一个仪表板,其中有几个用于过滤表结果的 selectInputs。例如,用户可以按特定的县、年龄组和性别进行过滤,并会收到一个包含所有这些结果的表格。假设用户这样做并收到不到 30 个结果,这是我需要仪表板响应而不提供结果的地方,甚至可能向用户提示(我会满足于数据抑制)。
我正在使用的数据库非常大,在这方面进行抑制最终会降低整体数据质量。我的想法是我需要服务器端的一些东西,基本上说当过滤结果> 30 时不显示。
如果需要进一步说明,请告诉我,对于缺乏 R 知识,我提前表示歉意。
谢谢!
最佳答案
在你的server
,您正在生成类似于以下内容的输出表:
output$table <- renderDataTable({ df %>% filter(var1 == "input$var1" &
var2 == "input$var2") })
并且你需要在ui
中返回错误信息nrow(output$table) < 30
的事件.
所以我建议使用 ifelse
在您的服务器和用户界面中处理每一种情况。像这样的东西:
服务器
table_react <- reactive({
temp <- df %>% filter(var1 == "input$var1" &
var2 == "input$var2")
ifelse(nrow(temp) >= 30, temp, NULL) })
output$table <- renderDataTable({ table_react() })
界面
ifelse(table_react() == NULL,
textOutput("Your selections result in a table with < 30 entries. Please try again."),
dataTableOutput("table"))
关于r - Shiny Dashboard 中的数据抑制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229814/