【发布时间】:2016-07-16 21:46:13
【问题描述】:
我试图弄清楚如何使用通过 UI 端的 selectInput 选择的变量来填充服务器端的地图数据。尽管我在手动设置变量以通过过滤数据显示时取得了一些成功,但对于可以动态更改的输入,它不能正常工作。是否有一些功能/解决方案可以帮助根据用户输入对数据进行子集化以显示在地图上?
UI.R
districts <- readOGR("location",layer)
metadata <- read.csv("metadata.csv")
#Prepare list of values for the selectInput boxes
COMMUNITYSAFETY<-as.list(metadata$variable[metadata$group == "Community Safety"])
names(COMMUNITYSAFETY)=metadata$description[metadata$group == "Community Safety"]
##CONTINUED FOR REST OF SELECTINPUT BOXES
ui <- fluidPage(
titlePanel("Map"),
sidebarPanel(
selectInput("vr", "Would you like to show the variable by value or rank?",
c("Value" = "_v",
"Rank" = "_r")
),
selectInput("group", "Select Group:",
c("Community Safety" = "COMMUNITYSAFETY",
"Demographics" = "DEMOGRAPHICS",
"Healthy People and Environments" = "HEALTHY_PEOPLE_ENVM",
"Housing" = "HOUSING",
"Income and Employment" = "INCOME_EMPL",
"Lifelong Learning" = "LIFE_LEARNING",
"Transportation" = "TRANSPORTATION")),
#if user choses Community Safety
conditionalPanel(
condition = "input.group == 'COMMUNITYSAFETY'",
selectInput("var", "Community Safety Variables:",
COMMUNITYSAFETY)),
#repeat other conditional panels for inputs
mainPanel(
tabsetPanel(
tabPanel("Map", leafletOutput("map", height=800)),
tabPanel("Histogram")
))))
服务器.R:
server <- function(input, output, session){
filteredData <- reactive({
subset(districts,select=input$var)
})
...
observe({
leafletProxy("map", data=districts) %>%
addPolygons(stroke=TRUE,
fillColor=pal(filteredData()),
color="black",
weight=.5)
})
}
【问题讨论】: