我正在访问 PUBGs API,并从比赛中获取遥测数据。这将返回一个相当大的 JSON 对象,该对象又被解析为列表列表。我很想把它变成一个 data.frame 以便进一步处理,但我遇到了列表数量和每个列表长度不同的问题。充其量,我从 12016 长度的列表中获得 100k 行,但并非所有列表元素都包含为列。
获取数据并解析它的代码
library(httr)
library(jsonlite)
# Get telemetry from URL
telemetry <- httr::VERB(
verb = "GET", url = "https://telemetry-cdn.playbattlegrounds.com/bluehole-pubg/steam/2020/06/28/13/52/8d51e4a6-b946-11ea-ac21-9e1c0fb3fbd4-telemetry.json",
httr::add_headers(
Accept = "application/json"
)
)
#Parse telemetry data
telemetry_parsed <- content(telemetry, as="parsed") # Parse JSON-object
最接近我想要的代码
library(purrr)
library(data.table)
dt_list <- map(telemetry_parsed, as.data.table)
dt <- rbindlist(dt_list, fill = TRUE, idcol = T)
然而,这还有一段路要走。查看第 5 行的“字符”列,有一个坐标列表应该是不同的列。
有任何想法吗?我已经尝试了“data.frame 不同长度的嵌套列表”答案的大部分答案。