Точки данных Долгота / Широта не найдены, хотя они предоставлены для интерактивной карты в Shiny - PullRequest
1 голос
/ 05 мая 2020

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

Я предоставил копию своего кода и образец данных.

library(shiny)
library(leaflet)
library(dplyr)
library(stringr)
library(ggplot2)

#import data
data <- structure(list(VictimSex = structure(c(2L, 2L, 4L, 4L, 2L), .Label = c("", 
                                                                       "F", "H", "M", "N", "X"), class = "factor"), Long = c("34.0508", 
                                                                                                                             "33.8542", "34.1052", "34.0255", "33.9997"), Lat = c("-118.2731", 
                                                                                                                                                                                  "-118.2905", "-118.3252", "-118.3548", "-118.2827")), row.names = c(NA, 
                                                                                                                                                                                                                                                      5L), class = "data.frame")


#Define UI ----
ui <- fluidPage(
  titlePanel("Interactive Los Angeles Traffic COllision"), 
  sidebarLayout(
    sidebarPanel(
      checkboxGroupInput("Gender", h3("Gender"), choices = list("F", "M"), selected = "Female")
    ),
    mainPanel(leafletOutput("map", "100%", 500), 
              plotOutput("bar"))
  )
)

#Define Server logic ---- 
server <- function(input, output, session) {
  filtered <- reactive ({
    if (is.null(input$Gender)){
      return(NULL)
    }
    data %>% filter(VictimSex %in% input$Gender)
  })

  output$map <- renderLeaflet({
    leaflet()%>%
      addProviderTiles("CartoDB") %>%
      addCircleMarkers(data = filtered(), radius = 2)
  })
}

#Run the app ----
shinyApp(ui, server)

Я получаю следующее сообщение об ошибке: данные точки не найдены; предоставьте addCircleMarkers с аргументами data и / или lng / lat

1 Ответ

0 голосов
/ 05 мая 2020

В вашем коде 3 проблемы.

1 - Если input $ Gender не установлен, filtered reactive возвращает NULL.

Исправлено: добавьте req a в начало функции, поэтому она не запускается, пока не будет установлен вход.

req(input$Gender)

Альтернативой может быть возврат полного набора данных, если фильтр не активен. Просто замените return(NULL) на return(data)

2 - данные широты / долготы находятся в тексте, а должны быть числовыми c.

Исправление: вы можете преобразовать его, используя as.numeric() в начале кода

data$Lat <- as.numeric(data$Lat)
data$Long <- as.numeric(data$Long)

3 - широта и долгота инвертированы.

Исправлено: вы можете обменять значение столбцов

tmpLat <- data$Long
data$Long <- data$Lat
data$Lat <- tmpLat
...