r - 有条件地将CircleMarkers 添加到传单
问题描述
我有一堆基于用户输入的反应式过滤器。仅当过滤器不返回 NULL 值时,我才想在传单地图上添加CircleMarkers。如何有条件地将CircleMarkers 添加到 Shiny 中的传单地图?现在它似乎只绘制了第二个过滤器的结果,而不是两者,即使用户输入对于两者都不为 NULL。我的猜测是第二个 addCircleMarkers 函数会覆盖第一个函数,而不是在地图上添加更多圆圈。下面是我的服务器代码:
服务器.R
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)
}
})
}
错误信息:
Error:no applicable method for 'filter_' applied to an object of class "NULL"
提前感谢您的帮助!
解决方案
在地图上绘制标记后,您需要将它们保存到变量中(例如,查看我们如何在此处解决此问题。
对于第二个问题(你真的应该单独发布它们),尝试粘贴而不是 cat,例如paste(statement1, statement2, sep = "\n")
。
推荐阅读
- django-registration - Django 注册 - 使用扩展的用户创建表单。在点击激活链接之前登录已激活
- r - 在多个文本文件上拆分 rmarkdown 演示代码
- google-cloud-datastore - 您能否以编程方式检测 Google Cloud Dataflow 中的重新执行?
- eclipse - 如何通过命令行运行在 Eclipse 中开发的 Robot Framework 项目
- python - 为什么“conv1d”在 C 代码、python 和 pytorch 中不同
- regex - 如何验证带/不带零的日期格式?
- php - 如何获得无需每次登录都可以使用的 facebook 访问令牌?
- javascript - Parse - 查询数组中包含的用户对象
- uima - 升级到 Ruta 2.8.0 后无法创建 Ruta 注释
- javascript - 单击外部时关闭下拉菜单