我想在 Shiny 中创建一个可视化应用程序,它将根据从 Census API(ACS 1 年)检索到的数据制作图表。为了扩展用户可用的变量选项,我希望根据用户输入调整 API 调用。下面我粘贴了一个基本代码示例,旨在将 tidycensus API 调用的结果打印为闪亮应用程序中的表格。用户应该能够输入新的表名并查看更新的结果,但是当输入新的表名时,数据表不会更新并且 API 调用似乎会持续运行。即使提供给 API 调用的默认值按预期工作也是如此。
请注意,人口普查 API 调用返回数据需要几秒钟的时间。
library(tidycensus); library(shiny)
# assumption that a census api key is already installed on your system
ui <- fluidPage(
textInput("table.name",
label = "Enter table name here:",
value = "B08006"),
tableOutput("acs")
)
server <- function(input, output) {
ACSdata <- reactive({
acs <- as.data.frame(get_acs(geography = "place",
table = as.character(input$table.name),
survey = "acs1",
year = 2016,
state = "PA"))
})
output$acs <- renderTable({
ACSdata()
})
}
shinyApp(ui, server)
要尝试的新表名:B05013
下面是结果控制台的图片。以“使用 FIPS 代码”开头的前三行是可见的——后面是一个在应用程序中弹出的表格,然后在我更改表格名称后,这些相同的行会无限重复。