这是我第一次尝试使用Shiny,而且我对这一切都很陌生,所以我想我的问题对于经验丰富的人来说非常简单。
我有一个与我想要映射的shp文件相关联的数据。我希望用户能够选择要在地图上显示的数据(哪种疾病)。用户将能够选择许多其他参数(受影响的年龄组,人均统计数据等),因此我试图整理一种缩小实际情节数据的方法。将有超过500种组合,因此逐一分配将是乏味的。到目前为止,我有以下内容:
(在代码之前,有大量数据清理并将内容设置为正确的格式。不要认为任何相关内容,但我可以在必要时添加)
ui <- fluidPage(
titlePanel("Health in Tanzania"),
DiseaseList <- c(NameDiagList[5:60],"All Disease"),
sidebarLayout(
sidebarPanel(
#Select disease
selectInput("DiseaseSelect",
label = "Disease",
choices = DiseaseList,
selected = "All Diseases"),
),
mainPanel(
leafletOutput("TZHealthMap")
)
)
server <- function(input, output) {
AllNames <- colnames(Map@data) #make a list of all the column names where health data is stored
DiseaseChoice <- subset(AllNames, grepl(input$DiseaseSelect, AllNames)) #select only the columns pertaining to the disease selected by user input
SelectedData <- Map@data[[DiseaseChoice[1]]] #take the first of the columns selected by user input
#this will eventually not just be the first item in DiseaseChoice, based on more selection
LeafletPalette <- colorNumeric(palette = rev(brewer.pal(5, "RdYlGn")), domain = SelectedData)
output$TZHealthMap <- renderLeaflet({
leaflet(Map) %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addPolygons(color = ~LeafletPalette(SelectedData))
})
}
shinyApp(ui = ui, server = server)
当我执行此代码时,我收到以下错误消息:没有活动的响应上下文时不允许操作。 (你试图做一些只能在反应式表达式或观察者内部完成的事情。)
如果我将行DiseaseChoice <- subset(AllNames, grepl(input$DiseaseSelect, AllNames))
替换为DiseaseChoice <- subset(AllNames, grepl(DiseaseList[1], AllNames))
,我会收到一些警告,但会生成地图,所以我怀疑input$DiseaseSelect
或者在grepl()
中使用它时会出现问题。 Select-Object
打电话或其他什么。
输入赞赏!!