2017-07-04 89 views
0

我想寫一個簡單的如果循環在R閃亮,但我創建一些問題。我想根據用戶輸入的內容創建一個變量,在本例中爲m。這裏有代碼:如果循環在R閃亮

if(input$city=="Enter Text..."){ 


m<-reactive({leaflet() %>% 
    addProviderTiles(providers$OpenStreetMap.BlackAndWhite) %>% 
    addPolylines(data = trips(), 
       lng = ~V1, 
       lat = ~V2,weight=1,color="purple") %>% 
addCircles(lng = geocode(input$city)$lon, lat = geocode(input$city)$lat, weight = 5, 
      radius =input$radius, popup = input$city, color="blue",fillOpacity = 0) 
}) 

} else { 

m<-reactive({leaflet() %>% 
    addProviderTiles(providers$OpenStreetMap.BlackAndWhite) %>% 
    addPolylines(data = trips(), 
       lng = ~V1, 
       lat = ~V2,weight=1,color="purple") 
}) 
} 

在這一過程中,我得到的是說,我試圖做一個反應環境之外的東西的錯誤,但變量m被定義爲反應。我怎樣才能解決這個問題?

由於

回答

1

input$city的確這需要在一個反應​​環境中使用的無功元件。 只需在您的reactive()函數中添加if語句即可。自從leaflet建設開始以來,它將使代碼更加清晰。

m<-reactive({leaflet() %>% 
    addProviderTiles(providers$OpenStreetMap.BlackAndWhite) %>% 
    addPolylines(data = trips(), 
       lng = ~V1, 
       lat = ~V2,weight=1,color="purple") %>% 
    {if(input$city=="Enter Text..."){ 
      addCircles(., lng = geocode(input$city)$lon, 
      lat = geocode(input$city)$lat, weight = 5, 
      radius =input$radius, popup = input$city, 
      color="blue",fillOpacity = 0) 
    } else {.} 
    } 
}) 

使用addCircles(.,,你得到的鏈接進入if語句,並與else {.},你可以返回前一個元素,不添加addCircles功能。

+0

它看起來像解決了上一個問題,但是,現在它返回「參數映射丟失,沒有默認值」。你有什麼想法嗎?謝謝 –

+1

是的,對不起,我忘記了'addCircles'中的要點來獲取if語句中的鏈接。下次嘗試提供一個可重複的例子:) – sechstein

+0

我不明白你的意思,爲什麼這是不可重現的? –