Подавление данных в Shiny Dashboard - PullRequest
0 голосов
/ 08 сентября 2018

Я очень новичок в использовании R, не говоря уже о блестящей приборной панели, но, тем не менее, у меня есть проект, который требует его использования. То, что я пытаюсь достичь, - это какой-то способ подавления определенного количества результатов в выводе. В настоящее время у меня есть панель инструментов, в которой у меня есть несколько selectInputs, которые фильтруют результаты таблицы. Например, пользователь может фильтровать данные по конкретному округу, возрастной группе и полу и получать таблицу, содержащую все эти результаты. Допустим, что пользователь сделал это и получил менее 30 результатов, вот где мне нужна панель управления, чтобы ответить не предоставляя результаты и, возможно, даже запросить пользователя (я бы согласился только на подавление данных).

База данных, с которой я работаю, очень велика, и ее подавление в конечном итоге приведет к снижению общего качества данных. Я думаю, что мне нужно что-то на стороне сервера, что в основном говорит, когда отфильтрованные результаты> 30, чтобы не отображать.

Пожалуйста, дайте мне знать, если потребуется больше разъяснений, и я заранее прошу прощения за отсутствие знания R.

Спасибо!

1 Ответ

0 голосов
/ 08 сентября 2018

В вашем 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"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...