Распакуйте файл .gz из API-вызова в R - PullRequest
0 голосов
/ 28 октября 2019

Я делаю первые попытки вызова API. Я успешно подключился через пакеты httr & jsonlite с помощью описанного здесь метода: https://www.programmableweb.com/news/how-to-access-any-restful-api-using-r-language/how-to/2017/07/21?page=2

Вызов API ниже:

get_table <- GET(call2, authenticate(username,password,type = "basic"))

get_table

Вот мой вывод на консоль с указанием статуса 200 иТип содержимого gzip:

> get_table
Response [---intentionally_hiding_URL_for_privacy.com----]
  Date: 2019-10-28 17:33
  Status: 200
  Content-Type: application/gzip
  Size: 607 kB
<BINARY BODY>

Проблема заключается в том, что я запускаю второй шаг к своему вызову:

get_tabledeserial <- content(get_table, "text")

get_tabledeserial

Консоль возвращает следующее:

> get_tabledeserial <- content(get_table, "text")
No encoding supplied: defaulting to UTF-8.
> 
> get_tabledeserial
[1] NA

IПолагаю, что это потому, что файл был заархивирован, когда я его вызываю, поэтому после десериализации его с помощью функции содержимого я получаю NA, поскольку таблицу все еще нужно разархивировать.

Я испробовал несколько способов разархивирования, один из которых был от Дирка ЭддельБеттеля из ответа на другой поток:

  1. Создайте темп. имя файла (например, tempfile ())
  2. Используйте download.file () для извлечения файла в temp. file
  3. Используйте unz (), чтобы извлечь целевой файл из temp. file
  4. Удалить временный файл с помощью unlink ()

При форматировании для моего собственного вызова метод Дирка выдает эту ошибку:

> temp <- tempfile()
> download.file("http://URL_hidden_for_privacy",temp)
downloaded 0 bytes

Error in download.file("http://URL_hidden_for_privacy",  : 
  cannot download all files
In addition: Warning message:
In download.file("http://URL_hidden_for_privacy",  :
  URL 'http://URL_hidden_for_privacy': status was '404 Not Found'
> data <- read.table(unz(temp, "A_RESOURCE_RESULT_VW.gz"))
Error in open.connection(file, "rt") : cannot open the connection
In addition: Warning message:
In open.connection(file, "rt") :
  cannot open zip file '/tmp/RtmpZBiDaG/file1f2f49eb5224'
> unlink(temp)

Я незнаете, почему распаковка не работает, но я подозреваю, что это связано с форматом вызова API?

В любом случае, на базовом уровне я хотел бы знать, почему я успешно завершаю вызов APIно у меня нет таблицы для десериализации, и если это происходит из-за типа заархивированного файла, как я могу его распаковать?

Заранее спасибо!

...