运行 一个函数 x 次,然后在再次运行之前休眠一段时间

Run a function x amount of times then sleep for a period before going again

我有一个包含 1000 个值的数据框,我需要将其传递给 API。

我发现如果我传递超过 500 个值,API 会引发错误,所以我希望传递 400 个值,在传递另一个 400 个值之前睡 10 分钟,然后再睡一个完成最后 200 分钟前 10 分钟。

为了提供一个代表,这里有一小部分数据样本:

examples <- data.frame(names = c(1003060377,1003213240,1003116930,1003020306,1003292350,1003094988,1003164716,1003156324,1003219981))

install.packages("pacman")

pacman::p_load(tidyverse,devtools)

devtools::install_github("frankfarach/npi")

x <- map_dfr(examples$names,npi::npi_search) %>% 
  select(addresses) %>% 
  unnest()

考虑到上面的小样本量,如果我可以让函数在传递两个值 1 分钟后进入休眠状态,然后继续下两个值等等,直到传递完所有值。

如果有人能提供帮助,我将不胜感激。

您可以使用 for 循环来跟踪已处理的条目。

library(dplyr)
library(tidyr)

result <- vector('list', nrow(examples))

for(i in seq(nrow(examples))) {
  #Sleep for 1 minute after every 2 values
  if(i %% 2 == 0) Sys.sleep(60)
  result[[i]] <- npi::npi_search(examples$names[i])
}

bind_rows(result) %>%
  select(addresses) %>% 
  unnest(addresses)

#  country_code country_name address_purpose address_type address_1
#   <chr>        <chr>        <chr>           <chr>        <chr>    
# 1 US           United Stat… LOCATION        DOM          6601 PHO…
# 2 US           United Stat… MAILING         DOM          800 MARS…
# 3 US           United Stat… LOCATION        DOM          5835 NE …
# 4 US           United Stat… MAILING         DOM          2100 DOU…
# 5 US           United Stat… LOCATION        DOM          1163 BLA…
# 6 US           United Stat… MAILING         DOM          1163 BLA…
# 7 US           United Stat… LOCATION        DOM          500 COMM…
# 8 US           United Stat… MAILING         DOM          150 SCHA…
# 9 US           United Stat… LOCATION        DOM          6420 CLA…
#10 US           United Stat… MAILING         DOM          6420 CLA…
#11 US           United Stat… LOCATION        DOM          118 W NO…
#12 US           United Stat… MAILING         DOM          PO BOX M 
#13 US           United Stat… LOCATION        DOM          520 S SA…
#14 US           United Stat… MAILING         DOM          520 S SA…
#15 US           United Stat… LOCATION        DOM          910 S. H…
#16 US           United Stat… MAILING         DOM          24 ROY S…
#17 US           United Stat… LOCATION        DOM          1595 HAR…
#18 US           United Stat… MAILING         DOM          1595 HAR…
# … with 6 more variables: address_2 <chr>, city <chr>, state <chr>,
#   postal_code <chr>, telephone_number <chr>, fax_number <chr>