Я извлекаю футбольные данные через API - полученный JSON возвращается в виде списка; dput
пример ниже:
list(list(id = 10332894L, league_id = 8L, season_id = 12962L,
aggregate_id = NULL, venue_id = 201L, localteam_id = 51L,
visitorteam_id = 27L, weather_report = list(code = "drizzle",
temperature = list(temp = 53.92, unit = "fahrenheit"),
clouds = "90%", humidity = "87%", wind = list(speed = "12.75 m/s",
degree = 200L)), attendance = 25098L, leg = "1/1",
deleted = FALSE, referee = list(data = list(id = 15267L,
common_name = "L. Probert", fullname = "Lee Probert",
firstname = "Lee", lastname = "Probert"))), list(id = 10332895L,
league_id = 8L, season_id = 12962L, aggregate_id = NULL,
venue_id = 340L, localteam_id = 251L, visitorteam_id = 78L,
weather_report = list(code = "drizzle", temperature = list(
temp = 50.07, unit = "fahrenheit"), clouds = "90%", humidity = "93%",
wind = list(speed = "6.93 m/s", degree = 160L)), attendance = 22973L,
leg = "1/1", deleted = FALSE, referee = list(data = list(
id = 15273L, common_name = "M. Oliver", fullname = "Michael Oliver",
firstname = "Michael", lastname = "Oliver"))))
Я сейчас извлекаю, используя цикл for - представьте 2 элемента списка верхнего уровня, когда в полных данных их сотни. Основным недостатком использования цикла является то, что иногда отсутствуют значения, которые приводят к остановке цикла. Я хотел бы переместить это в purrr
, но я пытаюсь извлечь вложенные элементы 2-го уровня, используя at_depth
или modify_depth
. Есть также гнезда внутри гнезд, которые действительно увеличивают сложность.
Конечное состояние должно быть аккуратным фреймом данных - из этих данных df будет иметь только 2 строки, но будет иметь много столбцов, каждый из которых представляет элемент, независимо от того, где этот элемент вложен в этот список. Если чего-то не хватает, тогда это должно быть значение NA
.
Идеальный сценарий для решения, даже если он может быть не элегантным, состоит в том, что для каждого уровня / вложенного элемента создается кадр данных, который затем можно связать вместе.
спасибо.