2016-06-13 4 views
1

나는 우편 번호 입력과 관련된 위도와 경도에 따라지도에 원을 삽입하는 Shiny App을 보유하고 있습니다. 로드 할 때지도가 렌더링됩니다. 그러나 selectInput 객체를 통해 우편 번호의 값을 변경하려고하면지도에서 빈 창이 렌더링됩니다. 즉, selectedZip 변수가 렌더링됩니다.R Shiny Leaflet지도 서클이 변경된 후

이 문제를 해결하는 어떤 도움을 이해할 수있을 것이다 :

library(shiny) 
library(leaflet) 

# Data 
data <- read.csv('VENDOR_PERFORMANCE_EX.csv') 

ui <- fluidPage(
    titlePanel("VPD"), 
    sidebarLayout(
    sidebarPanel("Inputs"), 
    mainPanel("Results")), 
    selectInput("zipInput", "Select Zip Code", data$Zip), 
    selectInput("vendorInput", "Select Vendor", as.character(data$Vendor)), 
    leafletOutput("CLEmap", width = "75%", height = 600) 
) 

server <- function(input, output, session) { 
    selectedZip <- reactive({ 
     data[data$Zip == input$zipInput, ] 
    }) 
    output$CLEmap <- renderLeaflet({ 
     leaflet() %>% 
     addTiles() %>% 
     setView(-81.730844, 41.430102, zoom = 11) %>% 
     addCircles(data = selectedZip(), lng = ~ Y, lat = ~ X, radius = 1069) 
    }) 
} 

shinyApp(ui=ui, server = server) 

답변

1

이 작동, 무슨 매우 이상한 일이 있지만. 그리고 비록 내가 당신의 데이터를 가지고 있지 않기 때문에 당신이 가지고있는 것과 같은 문제를 고칠 수는 없지만 그것이 가능할 것 같습니다.

일단 데이터를 추가하고 오류가있는 것처럼 들리면 나는 주변을 사냥했습니다. 내가 마지막으로 만들었던 유일한 변화는 zipInput 인스턴스에 zipInput 인스턴스에 unique 문을 추가하는 것입니다. 실제로는 초기 값이 공백이 아닌 다른 작업을 수행하고 있었지만 실제로는 selectInput이 올바르게 초기화되지 않았다는 단서가있었습니다.

choices 벡터에서 selectInput 컨트롤이 중복 된 항목을 올바르게 처리하지 못했고 반짝이는 컨트롤이 어떤 방식 으로든 이상하게 작동하여 손상 될 수 있다고 생각합니다. 뭐라 구요.

이상한. 그리고 실제로 진행되고있는 것이 확실하지 않습니다. 어쨌든 이것은 작동합니다. 그리고 만약 당신이 unique을 꺼내면 가 작동하지 않고과 같은 에러 메시지가 나옵니다.

코드 :

library(shiny) 
library(leaflet) 

# Data 
#data <- read.csv('VENDOR_PERFORMANCE_EX.csv') 

data <- data.frame(Zip=c("44102","44102","44109"), 
        Vendor=c("Vendor1","Vendor2","vendor3"), 
        X=c(41.475,41.477,41.467),Y=c(-81.742,-81.748,-81.697)) 

ui <- fluidPage(
    titlePanel("VPD"), 
    sidebarLayout(
    sidebarPanel("Inputs"), 
    mainPanel("Results")), 
    selectInput("vendorInput", "Select Vendor", as.character(data$Vendor)), 
    selectInput("zipInput", "Select Zip Code", unique(as.character(data$Zip))), 
    leafletOutput("CLEmap", width = "75%", height = 600) 
) 

server <- function(input, output, session) { 
    selectedZips <- reactive({ 
    data[data$Zip == input$zipInput, ] 
    }) 
    output$CLEmap <- renderLeaflet({ 
    leaflet() %>% 
     addTiles() %>% 
     setView(-81.730844, 41.430102, zoom = 11) %>% 
     addCircles(data=selectedZips(),lng = ~Y, lat = ~X,radius = 300) 
    }) 
} 

shinyApp(ui=ui, server = server) 

출력 :

enter image description here

+0

참고 그것이 나오는 에러 일으키는 오타 고정. –

+0

굉장한 조언 - 위대한 작품! 임시로 작동하도록 observeEvent() 객체를 추가했지만 원하는 방식으로 동작하지 않았습니다. 이 사실에 대한 당신의 통찰력을 정말 고맙게 생각합니다. –