2015-08-20 3 views
4

Я не могу понять, почему clearshapes() не работает в моей брошюре блестящей программы. Я пытаюсь удалить существующие круги и заменить на категорию, которая выбрана на основе ввода флажок, который у меня есть. Однако происходит то, что новые круги накладываются поверх существующих.clearShapes() не работает - рекламная листовка() для R

Кто-нибудь сталкивается с этим раньше?

df = read.csv("mappingData.csv",header=T, sep =",") 

ui = fluidPage(
    checkboxGroupInput("set", label = "Pothole Reported by:", 
        choices = list("Citizens Connect App" = "Citizens Connect App", 
            "City Worker App" = "City Worker App", 
            "Constituent Call" = "Constituent Call", 
            "Self Service" = "Self Service", 
            "Employee Generated" = "Employee Generated", 
            "Not Available (Cambridge)" = "")), 

    verbatimTextOutput("value"), 

    leafletOutput("map") 
) 


server <- function(input, output) { 

    filteredDataCheck <- reactive({ 
    # subset(df, Source == input$set) 
    print(input$set) 
    }) 

    output$value <- renderPrint ({ filteredDataCheck() }) 

    filteredData <- reactive({ 
    df[as.character(df$Source) == input$set, ] 
    }) 


    output$map <- renderLeaflet ({ 
    leaflet(df) %>% 
     setView(-71.083, 42.353, 13) %>% 
    addProviderTiles("Stamen.TonerLite", options = providerTileOptions(noWrap=T)) 
    }) 

    observe({ 
    leafletProxy("map", data = filteredData()) %>% clearShapes() %>% 
     addCircles(radius = 1, color = "red", group = "circles") %>% clearShapes() 

    }) 

} 

shinyApp(ui = ui, server = server) 

ответ

11

Похоже, что существует проблема, когда filteredData() пуст. Вы можете пытаться добавив если/другое:

if(nrow(filteredData())==0) { leafletProxy("map") %>% clearShapes()} 
else { 
    leafletProxy("map", data = filteredData()) %>% clearShapes() %>% 
     addCircles(radius = 1, color = "red", group = "circles") 
    } 

Кроме того, если вы хотите, чтобы все точки данных, имеющие выбранный Source, вы можете захотеть использовать %in% вместо == в вашей фильтрации:

df[as.character(df$Source) %in% input$set, ] 
+0

NICE - Спасибо большое. Это работает. Тем не менее, мне было интересно, знаете ли вы о каком-либо удобном для меня способе сделать так, чтобы clearShapes() удалялся только тогда, когда данный элемент удаляется из списка. Прямо сейчас, все формы очищаются при добавлении нового элемента, поэтому неудобно очищать фигуры при простом добавлении нового набора фигур. –

+2

Спасибо! Это хорошо известная проблема или ее следует сообщать? – iku

Смежные вопросы