如何在URL的数据帧上循环jsonlite函数?

如何在URL的数据帧上循环jsonlite函数?,r,json,api,web-scraping,web-scraping-language,R,Json,Api,Web Scraping,Web Scraping Language,我试图在我积累的一组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,

我试图在我积累的一组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=",")

5月28日您是否尝试过不使用
%%>%%

另外,您可以尝试一个类似于

的模拟api URL的可复制示例
循环失败的原因是您有一些无效或有问题的URL

看看这样做是否能解决您的问题:

library(tidyverse)

# Function to download - it takes two inputs: (1) url and (2) save file name
dl_my_url <- function(url_address, file_name_to_save){

  x <- httr::GET(url_address)
  y <- httr::content(x, as = 'text')
  z  <- jsonlite::fromJSON(z)

  print(dplyr::glimpse(z))

  output <- as.data.frame(z)

  write.table(output, file = file_name_to_save, sep=",")

}

# make the function safe in case some url fails
safe_dl_my_url <- safely(dl_my_url)

# Run the function (make sure you create a save name for each url)
url_result <- map2(urldf$address, urldf$file_name_to_save, ~safe_dl_my_url(.x, .y))

# To get your results
map(url_result, "result") %>% bind_rows() # or bind_cols which ever works for you

# Check what is failing
map(url_result, "error")
库(tidyverse)
#要下载的函数-它需要两个输入:(1)url和(2)保存文件名

dl_my_url您使用
%%>%%
的方式是不正确的语法。我认为这是一个换位错误,当你重写的代码,所以
library(tidyverse)

# Function to download - it takes two inputs: (1) url and (2) save file name
dl_my_url <- function(url_address, file_name_to_save){

  x <- httr::GET(url_address)
  y <- httr::content(x, as = 'text')
  z  <- jsonlite::fromJSON(z)

  print(dplyr::glimpse(z))

  output <- as.data.frame(z)

  write.table(output, file = file_name_to_save, sep=",")

}

# make the function safe in case some url fails
safe_dl_my_url <- safely(dl_my_url)

# Run the function (make sure you create a save name for each url)
url_result <- map2(urldf$address, urldf$file_name_to_save, ~safe_dl_my_url(.x, .y))

# To get your results
map(url_result, "result") %>% bind_rows() # or bind_cols which ever works for you

# Check what is failing
map(url_result, "error")