R Блестящая листовка, ggplot, lists: Warning: Ошибка в: Эстетика должна быть либо длины 1, либо соответствовать данным (18221401): y - PullRequest
0 голосов
/ 29 июня 2019

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

Не похоже, что результат нажатия на маркер может быть использован для получения данных из списка.

library(tidyverse)
library(stringr)
library(data.table)
library(lubridate)
library(rvest)
library(leaflet)
library(readxl)
library(geojsonio)
library(ggrepel)
library(rgdal)
library(rsconnect)
library(shiny)


d <- data.frame(x = 10:19, y = 1:10)
e <- data.frame(x = 10:19, y = 1:10)
f <- data.frame(x = 10:19, y = 1:10)

def <- list(d,e,f)
Latitude <- c(44.41252,44.39915,44.32057)
Longitude <- c(-68.25078,-68.23193,-68.25533)
name <- c("BB","DB","CBC")
markers <- data.frame(Latitude = Latitude, Longitude = Longitude, name = name)
states.url <- "http://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_040_00_5m.json"
states <- geojson_read(states.url, what = "sp")
names(def) <- name


ui <- fluidPage(

  # Application title
  titlePanel("Map and Markers"),

    mainPanel(
      leafletOutput(outputId = "map1"),
      plotOutput(outputId = "plot1"))
  )


server <- function(input, output) {

  output$map1 <- renderLeaflet({
    states %>%
      leaflet() %>%
      addTiles() %>%
      setView(-68.3, 44.35, 11) %>%
      addMarkers(clusterOptions = markerClusterOptions(),
                 layerId = ~markers$name,
                 lat = ~markers$Latitude,
                 lng = ~markers$Longitude,
                 popup = paste("Site: ", markers$name, "<br>"))
  })

  output$plot1 <- renderPlot({

    def$input$map1_marker_click$id %>%
      ggplot(aes(x = x,
                 y = y)) +
      geom_point()

  })
}

# Run the application 
shinyApp(ui = ui, server = server)

Я бы хотел, чтобы при щелчке по маркеру появлялся график, но вместо этого я получил ошибку "Эстетика должна быть либо длины 1, либо такой же, как данные (18221401): y". В моем невоспроизводимом примере я получил ошибку «Ошибка в: data должен быть фреймом данных или другим объектом, который может быть fortify(), а не символьным вектором». Любая помощь приветствуется!

...