У меня есть созданная функция веб-очистки, которая получает данные из API. Я передаю столбец df
, который у меня есть, одному из аргументов функции в функции веб-очистки. Проблема, с которой я столкнулся, состоит в том, что URL-адрес занимает до 500 номеров в одном из параметров, а у моего df
есть 2000 строк.
Как бы я разделил строки на 500, чтобы передать значения в функцию?
Я создал очень простое c представление, которое показывает рабочий процесс того, что я собираюсь сделать. Я хочу передать столбец split df в функцию анализа. Я предполагаю, что мне нужно было бы обернуть JSON
разбор с map_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)
Я думаю, что мне, вероятно, нужно создать 2 функции. 1 функция, которая анализирует данные, и та, которая использует map_dfr на основе разделений.
Что-то вроде:
# Split ID's from DF here. I want blocks of 500 rows to pass below
# Map Split ID's over parse_people
ids %>%
map_dfr(parse_people)