Почему функция parse_stream () Rtweet возвращает объект NULL? - PullRequest
1 голос
/ 30 октября 2019

У меня есть серия файлов .json, каждый из которых содержит данные, захваченные от 500 до 10000 твитов (по 3-40 МБ каждый). Я пытаюсь использовать функцию parse_stream() rtweet для чтения этих файлов в R и сохранения данных твита в таблице данных. Я пробовал следующее:

tweets <- parse_stream(path = "india1_2019090713.json")

Нет сообщения об ошибке, и команда создает объект tweets, но он пуст (NULL). Я пробовал это с другими файлами .json, и результат тот же. Кто-нибудь сталкивался с таким поведением / есть что-то очевидное, что я делаю не так? Я был бы признателен за любые советы новичку rtweet!

Я использую версию 0.6.9 rtweet.

Большое спасибо!

1 Ответ

0 голосов
/ 04 ноября 2019

В качестве обновления и частичного ответа: я не добился прогресса в исходной проблеме, но у меня был гораздо больший успех с использованием пакета jsonlite, который в достаточной степени способен читать в больших и сложных файлах .json, содержащих данные Tweet.

library(jsonlite)

Я использовал функцию fromJSON() как подробно здесь . Я обнаружил, что мне нужно отредактировать исходный файл .json, чтобы он соответствовал требуемой структуре, начиная и заканчивая файл квадратными скобками ([]) и добавляя запятую перед каждым разрывом строки в конце каждого твита. Затем:

tweetsdf <- fromJSON("india1_2019090713.json", simplifyDataFrame = TRUE, flatten = TRUE)

simplifyDataFrame обеспечивает сохранение содержимого в виде фрейма данных с одной строкой на твит, а flatten сворачивает большинство вложенных атрибутов Tweet для разделения столбцов длякаждое вспомогательное значение, а не создание столбцов, полных громоздких структур списков.

...