Leaflet/shiny: 无法绘制反应多边形
Leaflet/shiny: cannot draw reactive polygons
查看 Shiny integration example on the Leaflet for R page 后,我在设置子集和显示一些要在我闪亮的应用程序中显示的多边形时遇到问题。
目前,我正在安装一个带有侧边栏的应用程序,但主显示屏只是 "Error:Don't know how to get path data from object of class reactive"
想法是从 GB(3 个国家/地区)中选择一个国家/地区多边形并根据下拉选项单独显示它;
require(shiny)
require(rgdal)
require(rgeos)
require(leaflet)
cont <- readOGR(".\mypath\mypolygons.shp", "mypolygons", stringsAsFactors=FALSE)
ui <- fluidPage(
titlePanel("My page"),
sidebarLayout(
sidebarPanel(
selectInput("countryInput", "Country:", choices = c('England','Scotland','Wales'))
),
mainPanel(
leafletOutput("mymap")
)
)
)
server <- function(input, output, session) {
pols <- eventReactive(input$countryInput,{cont[substr(cont@data$code,1,1)==substr(input$countryInput,1,1),]})
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = pols)
})
}
shinyApp(ui, server)
错误:
Warning: Error in polygonData.default: Don't know how to get path data from object of class reactive
Stack trace (innermost first):
83: polygonData.default
82: polygonData
81: derivePolygons
80: addPolygons
79: function_list[[k]]
78: withVisible
77: freduce
76: _fseq
75: eval
74: eval
73: withVisible
72: %>%
71: func [#6]
70: output$mymap
4: <Anonymous>
3: do.call
2: print.shiny.appobj
1: <Promise>
修复:
首先我改变了;
pols <- eventReactive(input$countryInput,{cont[substr(cont@data$code,1,1)==substr(input$countryInput,1,1),]})
到;
pols <- reactive({cont.sim[substr(cont.sim@data$gssCode,1,1)==substr(input$countryInput,1,1),]
并且 'addPolygons 行在变量名 'pols'
后缺少 open/close 方括号
addPolygons(data = pols)
变成
addPolygons(data = pols())
查看 Shiny integration example on the Leaflet for R page 后,我在设置子集和显示一些要在我闪亮的应用程序中显示的多边形时遇到问题。
目前,我正在安装一个带有侧边栏的应用程序,但主显示屏只是 "Error:Don't know how to get path data from object of class reactive"
想法是从 GB(3 个国家/地区)中选择一个国家/地区多边形并根据下拉选项单独显示它;
require(shiny)
require(rgdal)
require(rgeos)
require(leaflet)
cont <- readOGR(".\mypath\mypolygons.shp", "mypolygons", stringsAsFactors=FALSE)
ui <- fluidPage(
titlePanel("My page"),
sidebarLayout(
sidebarPanel(
selectInput("countryInput", "Country:", choices = c('England','Scotland','Wales'))
),
mainPanel(
leafletOutput("mymap")
)
)
)
server <- function(input, output, session) {
pols <- eventReactive(input$countryInput,{cont[substr(cont@data$code,1,1)==substr(input$countryInput,1,1),]})
output$mymap <- renderLeaflet({
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addPolygons(data = pols)
})
}
shinyApp(ui, server)
错误:
Warning: Error in polygonData.default: Don't know how to get path data from object of class reactive
Stack trace (innermost first):
83: polygonData.default
82: polygonData
81: derivePolygons
80: addPolygons
79: function_list[[k]]
78: withVisible
77: freduce
76: _fseq
75: eval
74: eval
73: withVisible
72: %>%
71: func [#6]
70: output$mymap
4: <Anonymous>
3: do.call
2: print.shiny.appobj
1: <Promise>
修复:
首先我改变了;
pols <- eventReactive(input$countryInput,{cont[substr(cont@data$code,1,1)==substr(input$countryInput,1,1),]})
到;
pols <- reactive({cont.sim[substr(cont.sim@data$gssCode,1,1)==substr(input$countryInput,1,1),]
并且 'addPolygons 行在变量名 'pols'
后缺少 open/close 方括号addPolygons(data = pols)
变成
addPolygons(data = pols())