首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有条件的addCircleMarkers到传单

有条件的addCircleMarkers到传单
EN

Stack Overflow用户
提问于 2018-06-22 10:22:13
回答 2查看 1.5K关注 0票数 2

我有一堆基于用户输入的反应过滤器。只有当过滤器不返回空值时,我才希望addCircleMarkers在我的传单地图上。我怎样才能有条件的addCircleMarkers到一张有光泽的传单地图?现在看来,它只绘制来自第二个过滤器的结果,而不是两者,即使用户输入对两者都不是空的。我的猜测是,第二个addCircleMarkers函数正在覆盖第一个函数,而不是在映射中添加更多的圆。下面是我的服务器代码:

server.R

代码语言:javascript
运行
复制
server <- function(input, output) {


relig_pal <- colorFactor("magma", unique(all_cleaned$religion))
denom_pal <- colorFactor("viridis", unique(all_cleaned$denom))

output$mymap <- renderLeaflet({
  input$years_map
  input$map_button
  isolate({
    map <- leaflet() %>% addTiles() 
    if(!is.null(geography_1())) {
    marker_1 <- addCircleMarkers(map = map, data = geography_1(),
                     radius = ~ifelse(is.na(denom), log(religion_population), 
                                      log(denom_pop)),
                     color = ~ifelse(is.na(denom), relig_pal(religion),
                                     denom_pal(denom)),
                     label = ~ifelse(is.na(denom), 
                                            paste("Religion:",religion,
                                                  "Population:",religion_population),
                                            paste("Denomination:", denom,               
                                                  "Population:", denom_pop)) 
    )
    }
    if(!is.null(geography_2())) {
    marker_1 %>% addCircleMarkers(data = geography_2(),
                     radius = ~ifelse(is.na(denom), log(religion_population), 
                                      log(denom_pop)),
                   color = ~ifelse(is.na(denom), relig_pal(religion),
                                   denom_pal(denom)),
                   label = ~ifelse(is.na(denom), 
                                          paste("Religion:", religion,
                                                "Population:", religion_population),             
                                          paste("Denomination:", denom,              
                                                "Population:", denom_pop))
    )
    }
  })
})

year <- reactive({
  req(input$years_map)
  all_cleaned %>% filter(year == input$years_map)
})

religion_1 <- reactive({
  req(input$religion_1_map)
  if(input$religion_1_map == "All") {
    year()
  }
  else if(input$religion_1_map == "None") {
    return()
  }
  else {
    year() %>% filter(religion == input$religion_1_map)
  }
})

denom_1 <- reactive({
  req(input$denom_1_map)
  if(input$denom_1_map == "All") {
    religion_1()
  }
  else if(input$denom_1_map == "None") {
    religion_1() %>% filter(is.na(denom))
  }
  else {
    religion_1() %>% filter(denom == input$denom_1_map)
  }
})

geography_1 <- reactive({
  req(input$geography_1_map)
  if(input$geography_1_map == "All") {
    denom_1()
  }
  else if(input$geography_1_map == "None") {
    return()
  }
  else {
    denom_1() %>% filter(country_name == input$geography_1_map)
  }
})


religion_2 <- reactive({
  req(input$religion_2_map)
  if(input$religion_2_map == "All") {
    year()
  }
  else if(input$religion_2_map == "None") {
    return()
  }
  else {
    year() %>% filter(religion == input$religion_2_map)
  }
})

denom_2 <- reactive({
  req(input$denom_2_map)
  if(input$denom_2_map == "All") {
    religion_2()
  }
  else if(input$denom_2_map == "None") {
    religion_2() %>% filter(is.na(denom))
  }
  else {
    religion_2() %>% filter(denom == input$denom_2_map)
  }
})

geography_2 <- reactive({
  req(input$geography_2_map)
  if(input$geography_2_map == "All") {
    denom_2()
  }
  else if(input$geography_2_map == "None") {
    return()
  }
  else {
    denom_2() %>% filter(country_name == input$geography_2_map)
  }
})

}

错误消息:

代码语言:javascript
运行
复制
Error:no applicable method for 'filter_' applied to an object of class "NULL"

提前感谢您的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-24 17:25:36

更新:

我成功地解决了这个问题,使用@Romanštrik的建议将第一个圆圈标记作为变量存储,并使用占位符绘制不透明点0,而不是在任何情况下不应该在绘图上出现空值时处理空值,而这一点我还不太清楚。

票数 0
EN

Stack Overflow用户

发布于 2018-06-22 11:12:19

一旦在地图上绘制了标记,就需要将这些标记保存到变量中(例如,查看我们如何解决这个问题这里 )。

对于第二个问题(您应该单独发布),尝试粘贴而不是cat,例如paste(statement1, statement2, sep = "\n")

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50985846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档