Запуск результатов из вызова

#r #api

Вопрос:

Я пытаюсь запустить этот пример сценария, но когда я набираю эту команду, я получаю следующую ошибку

 austin_tx <- city_state("AUSTIN", "TEXAS")

Error in if (this.clean.resp$page_metadata$has_next_page == FALSE) { : 
  argument is of length zero
 

есть идеи, почему это происходит?

Ответ №1:

Спереди API изменился.

Конечная точка была удалена. Пожалуйста, обратитесь к https://api.usaspending.gov/docs/endpoints для поддерживаемых в настоящее время конечных точек или https://github.com/fedspendingtransparency/usaspending-api чтобы сообщить о проблеме.

Как я нашел это:

 > debug(GET_all_pages) # the error indicates code found in this function
> austin_tx <- city_state("AUSTIN", "TEXAS")
> austin_tx <- city_state("AUSTIN", "TEXAS")
debugging in: GET_all_pages(PATH = "/api/v1/transactions/", QUERY = list(place_of_performance__city_name = CITY_NAME, 
    place_of_performance__state_name = STATE_NAME))
debug at #1: { ...
Browse[2]> n                                              # 'n' --> step to the next expression
debug at #3: pages <- list()
Browse[2]> n
debug at #5: url <- modify_url("https://api.usaspending.gov", path = PATH, 
    query = QUERY)
Browse[2]> n
debug at #10: raw.resp <- GET(url)
Browse[2]> n
debug at #11: if (http_type(raw.resp) != "application/json") {
    stop("API did not return json. Check 'status code = 200'", 
        call. = FALSE)
}
Browse[2]> n
debug at #15: this.char.resp <- rawToChar(raw.resp$content)
Browse[2]> n
debug at #17: this.clean.resp <- fromJSON(this.char.resp, flatten = TRUE)
Browse[2]> n
 

Поскольку мы знаем, что это объект, вызывающий проблему, я останавливаюсь здесь и смотрю на переменную.

 Browse[2]> str(this.clean.resp)
List of 1
 $ detail: chr "Endpoint has been removed. Please refer to https://api.usaspending.gov/docs/endpoints for currently supported e"| __truncated__
 

Документ, на который вы ссылались, устарел и нуждается в обновлении в соответствии с инструкциями по адресу https://api.usaspending.gov/docs/endpoints.

Комментарии:

1. Большое спасибо. Могу ли я задать еще один вопрос, поскольку я новичок в этой области. Другой вариант-загрузить набор данных отсюда files.usaspending.gov/database_download . Я скачал небольшой файл. Есть ли какой-либо способ прочитать эту базу данных, используя команды R в качестве фрейма данных, без необходимости сначала использовать опцию postgres?

2. Поскольку в описании файла указано, что это «Архив дампа PostgreSQL» , ответ отрицательный . Я не знаю ни одного инструмента, который обеспечивал бы доступ к формату необработанного дампа postgres (или любой СУБД, я подозреваю). Однако вы можете запустить образ docker postgres , импортировать в него архив дампа и таким образом получить доступ к локальной СУБД. (Если вы никогда не использовали docker, то … это может быть не для тебя.)

3. вы имеете в виду «это может быть не для вас». на случай, если я не знаю, как использовать опцию docker?

4. Использование docker не является гигантским, но не всегда интуитивно понятным для всех, поэтому я склонен давать рекомендации с осторожностью. Так что на самом деле это не очень хороший сайт для учебных пособий, которые могли бы помочь в этом, и у меня нет доступной ссылки. Это все.

5. Но если вам достаточно комфортно использовать (или вы хотите научиться) докер, то я думаю, что, возможно, это ваш лучший выбор: вытащите postgres:12 (или :latest ) изображение, начните с чего-то подобного docker run -d -p "5432:5432" --name mypg -e POSTGRES_PASSWORD=mysecretpassword -e POSTGRES_DB=usaspending postgres:12 . Затем следуйте инструкциям usaspending в формате pdf по предлагаемому использованию pg_restore (из контейнера docker, вероятно, с использованием монтирования тома) для импорта в базу данных. Затем используйте R DBI и odbc пакеты для подключения к только что созданному приложению postgres.