我正在尝试有效地将(对我而言)格式怪异的 JSONstream 读取到 R 数据帧中。这是一个个人项目来学习更多R。
它的格式类似于 ndjson,但在每个 json 条目之外都有一个时间戳。
我无法有效地将其读入数据框中。目前我将 jsonSTREAM 作为文本,使用正则表达式删除时间戳,并使用它的换行符“\r\n”将结果字符串拆分为字符向量。然后我终于可以使用 ndjson::flatten 将其放入数据帧中。
上面的内容很慢,我觉得我错过了一些明显的东西。有一个更好的方法吗?
我现在的代码如下:
library(httr)
library(ndjson)
url <- "https://livetiming.formula1.com/static/2021/2021-03-28_Bahrain_Grand_Prix/2021-03-28_Race/TimingAppData.jsonStream"
response <- content(GET(url), "text")
gsubbed_resp <- gsub("\\d{2}:\\d{2}:\\d{2}.\\d{3}", "", response)
resp_chr_vector <- unlist(strsplit(gsubbed_resp, "\r\n"))
result <- ndjson::flatten(resp_chr_vector)
生成的数据框是:
str(result)
Classes ‘data.table’ and 'data.frame': 1084 obs. of 536 variables: