Как я могу настроить вызовы API Tidycensus с помощью блестящего ввода приложения и визуализировать результаты?

Я хочу создать приложение визуализации в Shiny, которое будет создавать графики на основе данных, полученных из Census API (ACS 1 год). Чтобы расширить параметры переменных, доступные пользователям, я хочу, чтобы вызов API корректировался на основе пользовательского ввода. Ниже я вставил базовый пример кода, предназначенный для печати результатов вызова API tidycensus в виде таблицы в блестящем приложении. Пользователь должен иметь возможность ввести новое имя таблицы и увидеть обновленные результаты, однако при вводе нового имени таблицы таблица данных не обновляется, и вызов 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", видны - за ними следует всплывающая таблица в приложении, затем после того, как я изменю имя таблицы, эти же строки повторяются бесконечно.

введите описание изображения здесь

1 ответ

обзор

ACSdata() является реактивным выражением, но вы в настоящее время храните вывод get_acs() внутри объекта под названием acs никогда не возвращая содержание acs к глобальной окружающей среде. Как только это изменится, вы увидите обновление таблицы.

  ACSdata <- reactive({

    acs <- as.data.frame(get_acs(geography = "place", 
                                 table = as.character(input$table.name), 
                                 survey = "acs1", 
                                 year = 2016, 
                                 state = "PA")) 
    # return the contents of `acs` to the Global Environment
    return( acs )
  })

СС таблицы блестящие

Другие вопросы по тегам