2017-04-26 22 views
1

我想創建一個Shiny Leaflet,它基於多個參數過濾數據集,並且只繪製用戶已選擇的那些點。除了一個關鍵部分,一切都有效:當我運行應用程序時,出現「錯誤:找不到數據點;請向addMarkers提供數據和/或lng/lat參數」消息。 編輯:即使在input$question1 == FALSE時我也會收到此錯誤。這對我來說很有意義,因爲我沒有定義else或繪圖的初始數據集,但它可能是相關的。R閃亮傳單錯誤:addMarkers沒有收到來自反應函數的點數據

這裏是dputdataset一節:

dput(dataset[1:10,14:24]) 
structure(list(target.pops = structure(c(6L, 
6L, 18L, 31L, 21L, 27L, 27L, 18L, 6L, 27L), .Label = c("DD Adult", 
"DD Adult, DD Child", "DD Adult, DD Child, MH Adult", "DD Adult, DD Child, 
MH Adult, MH Child", 
"DD Adult, DD Child, MH Adult, MH Child, SA Adult", "DD Adult, DD Child, MH 
Adult, MH Child, SA Adult, SA Child", 
"DD Adult, DD Child, MH Adult, MH Child, SA Child", "DD Adult, DD Child, MH 
Child", 
"DD Adult, MH Adult", "DD Adult, MH Adult, MH Child", "DD Adult, MH Adult, 
MH Child, SA Adult", 
"DD Adult, MH Adult, MH Child, SA Adult, SA Child", "DD Adult, MH Adult, SA 
Adult", 
"DD Adult, MH Child", "DD Child, MH Adult, MH Child", "DD Child, MH Adult, 
MH Child, SA Child", 
"DD Child, MH Child", "DD Child, MH Child, SA Child", "DD Child, SA Child", 
"MH Adult", "MH Adult, MH Child", "MH Adult, MH Child, SA Adult", 
"MH Adult, MH Child, SA Adult, SA Child", "MH Adult, MH Child, SA Child", 
"MH Adult, SA Adult", "MH Adult, SA Adult, SA Child", "MH Child", 
"MH Child, SA Adult", "MH Child, SA Child", "SA Adult", "Unknown" 
), class = "factor"), 
col.data = c(1L, 1L, 1L, 9L, 1L, 1L, 1L, 
1L, 1L, 1L), 
adult = c(1L, 1L, 0L, 9L, 1L, 0L, 0L, 0L, 1L, 
0L), dd = c(1L, 1L, 1L, 9L, 0L, 0L, 0L, 1L, 1L, 0L), mh = c(1L, 
1L, 1L, 9L, 1L, 1L, 1L, 1L, 1L, 1L), 
sa = c(1L, 1L, 1L, 9L, 
0L, 0L, 0L, 1L, 1L, 0L), 
outpt = c(0L, 0L, 0L, 0L, 1L, 0L, 
1L, 0L, 0L, 0L), iw = c(1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 
0L), b3 = c(0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L)), 
.Names = c("status", "service", "target.pops", "child", "adult", "dd", "mh", 
"sa", "outpt", "iw", "b3"), row.names = c(NA, 10L), class = "data.frame") 

這裏是我用來生成濾波值的活性功能和renderLeaflet代碼:

server <- function(input, output) { 

    points <- reactive ({ 
      if (input$question1 == TRUE) { 
      filtered2 <- filter(dataset, col.data == 1) 
      select_(dataset, ~lng, ~lat) 
      } 
    }) 

    output$map <- renderLeaflet({ 
      leaflet(dataset) %>% 
        addTiles() %>% 
        setView(-77.33, 35.5881, 7) 
      addMarkers(points()) 
    }) 

} 

任何想法是什麼出錯了?預先感謝任何見解!

+2

我們不知道'dataset'或'col.data'是什麼樣子。你可以'輸入',這樣我們就可以瞭解數據結構以更好地幫助? –

+0

對不起,這是我第一次在這裏發表,所以我很欣賞指導。 'dataset'是幾種不同變量類型的數據框 - 它非常大,'dput'非常大。 'col.data'(以及所有被過濾的列)是一個整數列,其值爲1,0和9. – thepinkfreudian

+0

你可能會在數據集上使用'dplyr :: sample_frac'而不會失去問題的完整性嗎?如果它與數據本身相關或者函數調用 –

回答

0

我能解決這個問題。被卡住一個星期後,我改變了addMarkers語法

addMarkers(data = points()) 

,它按預期工作。