存储循环导致 R 中的数据帧

Storing loop results in a dataframe in R

我在 this thread 中有一个用户好心帮助我的代码。它完全符合我的要求,除了结果没有存储在数据框中。

## Setting up API Call 
base_string1 <- "https.api.companyname/jurisdiction="
base_string2 <- "&date="
end_string <- "api_token=XYZ"

## Specifying objects to loop over 
dates <- seq(as.Date("1990-01-01"), as.Date("2022-01-01"), by = "year")
dates <- paste(head(dates, -1), tail(dates-1, - 1), sep = ":")

countries<- paste0("eu_", c("fra", "ger"))

## Looping over 
map_dfr(dates, function(dates){
  map_dfr(states, function(countries){
    api_string <-  paste0(base_string1, countries, base_string2, dates, end_string)
    print(api_string)
    json <- jsonlite::fromJSON(api_string)
    data.frame("countries" = countries, 
               "dates" = dates, 
               "total_number" = json[["results"]]$total_number)
  })
})

这给了我

 countries                 dates total_number
1  eu_ger 1990-01-01:1990-12-31       2404
2  eu_fra 1990-01-01:1990-12-31       2056
3  eu_ger 1991-01-01:1991-12-31       3490
4  eu_fra 1991-01-01:1991-12-31       6070
5  eu_ger 1992-01-01:1992-12-31       7808
6  eu_fra 1992-01-01:1992-12-31       1904

这是我想要的信息,但我想将其存储在我可以访问的数据框中。我还想将这些国家/地区称为“德国”和“法国”,而不是日期范围,我想将其称为 1992 年之类的东西(还有一个我按月去的版本,在这种情况下我' d 希望该值为年月)。

我尝试在 API 调用后添加以下内容,但没有成功。

json_df<- as_tibble(json)
json_df <- data.frame("countries" = countries, 
               "dates" = dates, 
               "total_number" = json[["results"]]$total_number)

如何将结果存储在数据框中,理想情况下还可以更改国家/地区 names/dates?

按照上面评论中的建议尝试:

my_results <- map_dfr(dates, function(dates){
  map_dfr(states, function(countries){
    api_string <-  paste0(base_string1, countries, base_string2, dates, end_string)
    print(api_string)
    json <- jsonlite::fromJSON(api_string)
    data.frame("countries" = countries, 
               "dates" = dates, 
               "total_number" = json[["results"]]$total_number)
  })
})