拆分要传递给Purrr函数的列或向量

拆分要传递给Purrr函数的列或向量,r,tidyverse,purrr,R,Tidyverse,Purrr,我创建了一个web scrape函数,它从API获取数据。我将一个df列传递给web scrape函数中的一个函数参数。我遇到的问题是,URL在其中一个参数中最多占用500个数字,而我的df有2000行 为了将值传递到函数中,如何将行拆分为500 我已经创建了一个非常基本的reprex,它显示了我希望执行的工作流程。我想将splitdf列传递给parse函数。我猜我需要用map\u dfr library(tidyverse) sample_df <- tibble(id = 1:20,

我创建了一个web scrape函数,它从API获取数据。我将一个
df
列传递给web scrape函数中的一个函数参数。我遇到的问题是,URL在其中一个参数中最多占用500个数字,而我的
df
有2000行

为了将值传递到函数中,如何将行拆分为500

我已经创建了一个非常基本的reprex,它显示了我希望执行的工作流程。我想将splitdf列传递给parse函数。我猜我需要用
map\u dfr

library(tidyverse)

sample_df <- tibble(id = 1:20,
             col_2 = rnorm(1:20)) 

# parse function
parse_people <- function(ids = c("1", "10"), argument_2 = NULL){
  # Fake Base Url
  base_url <- "https://www.thisisafakeurl.com/api/people?Ids="

  # fix query parameters to collapse Ids to pass to URL
  ids<- stringr::str_c(ids, collapse = ",")

  url <- glue::glue("{base_url}{ids}")

  # Get URL
  resp <- httr::GET(url)

  # Save Response in JSON Format
  out <- httr::content(resp, as = "text", encoding = "UTF-8")

  # Read into JSON format.  
    jsonlite::fromJSON(out, simplifyDataFrame = TRUE, flatten = TRUE)

}


sample_parse <- parse_people(sample_df$id)

同时,您可以通过以下方式将20行数据帧拆分为5个数据帧,每个数据帧包含4行:

sample_df <- tibble(id = 1:20,
                    col_2 = rnorm(1:20)) 

split(sample_df, rep(1:5, each = 4))
sample_df

同时,您可以通过以下方式将20行数据帧拆分为5个数据帧,每个数据帧包含4行:

sample_df <- tibble(id = 1:20,
                    col_2 = rnorm(1:20)) 

split(sample_df, rep(1:5, each = 4))

sample\u df如果我们需要将data.frame拆分为
data.frame
列表,一个选项是
group\u split
gl

library(dplyr)
n <- 3
lst1 <- sample_df %>% 
          group_split(grp = as.integer(gl(n(), n, n())), keep = FALSE) %>%
          map(pull, id)

如果我们需要将data.frame拆分为
data.frame
列表,则可以使用
gl

library(dplyr)
n <- 3
lst1 <- sample_df %>% 
          group_split(grp = as.integer(gl(n(), n, n())), keep = FALSE) %>%
          map(pull, id)

如果df中要拆分的行数不均匀,该怎么办?我想除以500,但包括所有行。我用另一个解决方案修改了答案。我更新了我的问题/示例。基本上,我试图从ID中分割行,以便传递到map_dfr。如果我的df中要分割的行数不均匀,该怎么办?我想除以500,但包括所有行。我用另一个解决方案修改了答案。我更新了我的问题/示例。基本上,我正在尝试从ID中分割行,以便传递给map_dfr。您可以检查我的解决方案吗?您可以检查我的解决方案吗?我更新了我的问题/示例。基本上,我试图从ID中分割行,以便传递给map\u dfr。如何将值作为ID传递给map\u dfr函数?例如,在parse函数中解析人(ids=)。@Jazzmatazz Try
map(lst1,~parse人(ids=.x))
我更新了我的问题/示例。基本上,我试图从ID中分割行,以便传递给map\u dfr。如何将值作为ID传递给map\u dfr函数?例如,在parse函数中解析_人(ids=)。@Jazzmatazz Try
map(lst1,~parse_人(ids=.x))
map(lst1, ~ parse_people(ids = .x))