Использование фильтра данных перед построением приведет к отсутствию аргумента - PullRequest
0 голосов
/ 05 июня 2019

Я хочу создать блестящий дашборад для некоторых данных, однако, когда я нанесу на карту отфильтрованный фрейм данных, это вызовет ошибку около 0,5 с и покажет ее в консоли.

Я попытался удалитькоманда filter, которая является подмножеством (.[,input$groupby] %in% input$selectline, и все ошибки будут устранены. Но мне нужно отфильтровать данные, чтобы сделать интерактивный блестящий.

newData = mydata %>%
        group_by(`Year.ending.December`,.dots=input$groupby) %>%
        summarise(`Incidents.Recorded` = sum(`Incidents.Recorded`)/1000) %>%
        as.data.frame() %>%
        subset(.[,input$groupby] %in% input$selectline) #This command causes the error

ggplot(newData,aes_string("Year.ending.December","Incidents.Recorded",color = input$groupby)) +
        geom_line() +
        labs(x="Year",y="Counts(thound)")

Как показывает код выше, введите $ groupbyвернет имя столбца из ui.R, однако на линейной диаграмме будет показано несколько строк, поэтому мне также нужно позволить пользователю выбрать, какую строку он хочет видеть, поэтому input$selectline вернет список значений данных.

Также я думаю, что моя логика в порядке, потому что она, наконец, покажет правильный результат, только проблема перед тем, как показать результат, в области графика будет показано сообщение об ошибке около 0,5 с, как показано ниже: Предупреждение: Ошибка в порядке: аргумент 1 не является вектором

  108: order

  105: to_basic.GeomLine

  103: layers2traces

  102: gg2list

  101: ggplotly.ggplot

   98: plotly_build.gg

   96: "plotly":::"prepareWidget"

   95: func

   82: origRenderFunc

   81: output$plotArea

    1: runApp

1 Ответ

0 голосов
/ 05 июня 2019

Предполагается, что вы выполняете этот код внутри функции renderPlot(). Вы можете попытаться изменить несколько вещей: используйте group_by_ вместо group_by, поскольку input$groupby является символьным вектором. И используя filter_at, а не subset.

newData <-  mydata %>%
  group_by_("Year.ending.December", input$groupby) %>%
  summarise(`Incidents.Recorded` = sum(`Incidents.Recorded`)/1000) %>%
  as.data.frame() %>%
  filter_at(vars(input$groupby), any_vars(. %in% imput$selectline))

Если вы сможете показать воспроизводимый пример вашего приложения и данных с использованием только тех элементов, которые вовлечены в проблему, это будет лучшим способом помочь вам и протестировать код перед любыми рекомендациями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...