Skip to main content
2 of 3
added 228 characters in body
Spacedman
  • 66.5k
  • 6
  • 83
  • 121

Are you trying to put if statements into a magritrr piping chain? A little experiment will show this does not work:

> z = 1
> 2 %>% sqrt() %>% if(z==1){log()} %>% if(z==2){sqrt()} %>% sqrt
[1] TRUE

You can't put logic like that in magrittr pipe chains, so take it outside.

In your case, put something like this outside the leaflet pipe:

  if(input$map == "1"){
     mapdata = data1
     mapcol = rgb(215,48,39, max = 255)
  }
  if(input$map == "2"){
     mapdata = data2
     mapcol = rgb(....blah)
  }
  etc etc

Then in your pipe its:

    leaflet... %>% 
    addCircleMarkers(data = mapdata, 
                   lat =  mapdata$Lat, 
                   lng =  mapdata$Lon, 
                   radius = 4, col = mapcol) %>%

Some further investigation shows you can put if in a pipe if you wrap it in cotton-wool:

> 2 %>% (if(z==1){log}else{sqrt})
[1] 0.6931472

but just because you can doesn't mean you should. Keep logic out of pipes.

Spacedman
  • 66.5k
  • 6
  • 83
  • 121