R - L oop API Call - PullRequest
       2

R - L oop API Call

0 голосов
/ 10 февраля 2020

Я использую R для успешного выполнения вызовов API. Для каждого отдельного звонка мне нужно изменить один или два отличительных идентификатора (в случае кода ниже activity_id и / или name_id ). Код работает нормально, но сейчас я нахожусь в положении, когда мне нравится автоматизировать этот процесс, а не менять вручную идентификаторы для каждого вызова. Мне интересно, есть ли способ l oop использовать фрейм данных или список для хранения соответствующих идентификаторов.

Я искал по стеку, но мне еще предстоит найти или выполнить соответствующее решение.

Любая помощь будет признательна.

Спасибо,

JP C

apiKey <-"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI"
example<- GET("url?activity_id=b5cb9359-f0e5-4939-9be3-fc95f8bc7d6b&name_id=f1e17fa6-c40c-4810-9c43-60939e2a9a99",add_headers(Authorization = paste("Bearer", apiKey)))
example <-content(example,"text")
example <-fromJSON(example,flatten = TRUE)
example <-unnest(example,data)
write.csv(example,"example.csv",row.names=F)

1 Ответ

0 голосов
/ 10 февраля 2020

Мы могли бы написать функцию, в которой мы динамически генерируем URL, используя sprintf на основе переданных activity_id и name_id.

get_data <- function(activity_id, name_id) {

   url <- sprintf('url?activity_id=%s&name_id=%s', activity_id, name_id)
   example<- httr::GET(url,add_headers(Authorization = paste("Bearer", apiKey)))
   example <- httr::content(example,"text")
   example <- jsonlite::fromJSON(example,flatten = TRUE)
   example <- tidyr::unnest(example,data)
   return(example)
}

и затем вызовите его, используя Map.

out <- Map(get_data, activity_vec, name_vec)

Здесь activity_vec и name_vec - вектор соответствующих идентификаторов. Это вернет список фреймов данных в out, который при необходимости может быть объединен в один фрейм данных перед записью в csv.


Если только name_id меняется, мы можем сделать

get_data <- function(name_id) {
    url <- sprintf('url?activity_id=b5cb9359-f0e5-4939-9be3-fc95f8bc7d6&name_id=%s', name_id)
    example<- httr::GET(url,add_headers(Authorization = paste("Bearer", apiKey)))
    example <- httr::content(example,"text")
    example <- jsonlite::fromJSON(example,flatten = TRUE)
    example <- tidyr::unnest(example,data)
    return(example)
  }

out <- lapply(name_vec, get_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...