Как бы вы передали отфильтрованный фрейм данных в left_join в блестящем приложении? - PullRequest
0 голосов
/ 28 ноября 2018

Я пробовал вне приложения, и оно работает, но, похоже, не может сделать это внутри приложения.

Выбор кода примера из приложения (соответствующие биты):

   # Input: Selector for choosing the indicator
   selectInput(inputId = "indicator",
               label = "Choose an indicator:",
               choices = as.vector(Indicators)),

...

# Define server logic required to draw a histogram
server <- function(input, output) {

  #selected data
  selectedData <- reactive({
    data %>% 
      filter(Indicator == input$indicator)
  })

  #map data
  mapData <- reactive({
    left_join(poly, selectedData)
  mapData
  })

mapdata - это шейп-файл, но это не должно быть проблемой, так как он работает вне приложения.

Мне интересно, есть ли что-нибудь еще, что я должен делать.

Я думаю, это было бы эквивалентно некоторым воспроизводимым данным:

Indicator <- iris %>% distinct(Species)
selectedData <- iris %>% group_by(Species) %>% summarise(mean = mean(Sepal.Length))

Я надеюсьпередать это в ggplot.Эта ошибка отображается в консоли:

Ошибка в ggplot: объект 'mapdata' не найден

, а также в приложении:

Ошибка: объект 'mapdata' не найден

В отладчике options(shiny.error = browser) Я получил это:

    function (e) 
{
  if (inherits(e, "shiny.silent.error")) 
    return()
  handle <- getOption("shiny.error")
  if (is.function(handle)) 
    handle()
}

1 Ответ

0 голосов
/ 28 ноября 2018

это должно сработать

server <- function(input, output) {

  #selected data
  selectedData <- reactive({
    data %>% 
      filter(Indicator == input$indicator)
  })

  #map data
  mapData <- reactive({
    left_join(poly, selectedData())
  })
  output$ggplot_id <- renderPlot({
      ggplot(data = mapData()) +
        ...  #further definitions for your plot
    })
}

Надеюсь, это поможет !!

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