не могу найти переменную из фрейма данных, когда пытаюсь вызвать addCircleMarker в R блестящей листовке - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть набор данных, в котором есть информация о длинных и длинных позициях, а также информация об эксперименте для каждого длинного и длинного.

Я использовал addCircleMarkers для добавления маркеров. И я хочу иметь варианты всплывающих окон для каждого маркера. Я попытался вызвать «Experiment» во всплывающем окне, но оно выдает мне ошибки, которые он не может найти эту переменную. Я не уверен, где это пошло не так.

Dataset

ui <- fluidPage(
  titlePanel("Land Explorer"),

  selectInput("year", "Year of G2F", choices = c("2014", "2015", "2016", "All")),

  fluidRow(
    mainPanel(
    tags$style(type = "text/css", "#map {height: calc(100vh - 80px) !important;}"),
    leafletOutput("map"), width = "100%", height = 1000)
  )
)

server <- function(input, output){

  pal <- colorFactor("RdYlGn", county_simplified$zone, reverse = T, na.color = "white")

  state_popup <- paste0("<strong>State: </strong>", 
                    county_simplified$region, 
                    "<br><strong>County: </strong>", 
                    county_simplified$subregion)

  g2f <- reactive ({
    if (input$year  == "2014"){
      g2f_latlong = g2f_latlong[g2f_latlong$year == 2014, ]
   }
    else if (input$year == "2015"){
      g2f_latlong = g2f_latlong[g2f_latlong$year == 2015, ]
   }
     else if (input$year == "2016") {
       g2f_latlong = g2f_latlong[g2f_latlong$year == 2016, ]
   }
     else if (input$year == "All"){
       g2f_latlong = g2f_latlong
   }
     else (g2f_latlong = g2f_latlong)
 })

 output$map <- renderLeaflet({

 leaflet() %>% 
  addTiles() %>%
  addPolygons(data = county_simplified, weight = 1,
              color = "white",
              dashArray = '3',
              fillOpacity = 0.7,
              fillColor = ~pal(zone), 
              popup = state_popup) %>%
  addPolygons(data = state_boundry, weight = 1, color = "grey", fill = NA) %>%
  addLegend(pal = pal, value = county_simplified$zone, position = "topright", title = "Zones") %>%
  addCircleMarkers(data = g2f(), lng = ~long, lat = ~lat, popup = ~Experiment, radius = 1)
 })

}

 shinyApp(ui = ui, server = server)

1 Ответ

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

Вы не возвращаете отфильтрованные данные из среды reactive, поэтому ваша функция addCircleMarkers не получает данные для печати на листочке. Измените среду reactive, как показано ниже, и я надеюсь, что это решит вашу проблему.

g2f <- reactive({
    if (input$year  == "2014") {
      filtered_data <-  g2f_latlong[g2f_latlong$year == 2014, ]
    }else if (input$year == "2015") {
      filtered_data <-  g2f_latlong[g2f_latlong$year == 2015, ]
    }else if (input$year == "2016") {
      filtered_data <-  g2f_latlong[g2f_latlong$year == 2016, ]
    }else if (input$year == "All") {
      filtered_data <-  g2f_latlong
    }else {filtered_data <-  g2f_latlong}
    return(filtered_data)
  })
...