我正在尝试在我积累的一组 api url 上运行 jsonlite 函数。具体来说,我有一个名为 url_df 的数据框,它有一个名为 URL 的列,其中包含 162800 行 api url。当我编写脚本并一次手动插入每个 url 时,它工作得非常好。这是我用来一次在一个 url 上手动运行它的脚本:
May28 <- 'https://example.example.com/example'.
May28 <- httr::GET(May28)
May28 <- httr::content(May28, as = 'text')
May28 <- jsonlite::fromJSON(May28)
dplyr::glimpse(May28)
May28 <- as.data.frame(May28)
write.table(May28, file="May28.csv", sep=",")
但是,因为我有超过 100K 行的 api url 要通过,所以我想创建一个循环函数,将上述函数重复到列 URL 中的每一行(每个 api url),这样我就不必手动剪切和将每个 url 粘贴到脚本 100K+ 次。因此,我将此信息保存到名为“url_df”的数据框中,并尝试了以下代码:
j <- 1
for (j in 1:nrow(url_df)){
url <- url_df$URL[[j]] %>%
getdata <- GET(url) %>%
rawdata <- httr::content(getdata, as='text') %>%
data <- jsonlite::fromJSON(rawdata)
data_df <- as.data.frame(data)
print(j)
j <- j+1
Sys.sleep(0.5)
}
由于某种原因,它不会运行。我得到的错误之一是: jsonlite::fromJSON(rawdata) 中的错误:找不到对象'rawdata'。
一个可能很重要的警告:每个 api url 不只返回 1 个数据点值(例如,1)。相反,它返回一个值列表(例如,星期日、1、星期二、2 等)。
关于为什么会发生这种情况或我如何克服这个问题的任何想法?
在解决了第一个问题之后,如果可能的话,我想 rbind 我收集的所有数据......
谢谢!!!