Использование API для загрузки более одного идентификатора вопроса за вызов

Использование фрейма данных с идентификаторами вопросов из SO:

df <- data.frame (qid = c(71663375, 71674701, 71724524))

Используя следующий код, можно сделать 3 вызова API для получения информации по каждому вопросу.

Однако приложение SO дает возможность столкнуться с 1 вызовом 100 идентификаторов. Как это возможно сделать?

library(stackr)
for (j in 1:nrow(df)) {
  
  questions <- stack_questions(df$qid[j])
}
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
1
0
15
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если app может обрабатывать 100 за раз, splitqid в list векторов с каждым list элементом, содержащим 100 за раз,

lst1 <- split(df$qid, as.integer(gl(nrow(df), 100, nrow(df))))

а затем используйте lapply

library(stackr)
out <- lapply(lst1, stack_questions)
out_dat <- do.call(rbind, out)

или for петля, чтобы зациклиться на list

out <- vector('list', length(lst1))
for(i in seq_along(lst1)) {
   out[[i]] <- stack_questions(lst1[[i]])
}
out_dat <- do.call(rbind, out)

-выход

> out
[[1]]
              tags is_answered view_count accepted_answer_id answer_count score  last_activity_date       creation_date      last_edit_date question_id content_license
1                r        TRUE         32           71724636            1     0 2022-04-03 04:32:10 2022-04-03 04:15:43 2022-04-03 04:23:59    71724524    CC BY-SA 4.0
2                r        TRUE         19           71674900            1     0 2022-03-30 04:38:41 2022-03-30 04:25:06 2022-03-30 04:32:58    71674701    CC BY-SA 4.0
3 sql,dataexplorer       FALSE         27                 NA            1     0 2022-03-29 09:18:20 2022-03-29 08:54:52 2022-03-29 09:00:36    71663375    CC BY-SA 4.0
                                                                                                                          link                                                                           title
1                                            https://stackoverflow.com/questions/71724524/melt-a-dataframe-using-a-list-column                                            Melt a dataframe using a list column
2 https://stackoverflow.com/questions/71674701/create-a-new-column-using-detecting-the-domain-of-a-url-from-an-existing-column Create a new column using detecting the domain of a url from an existing column
3                                     https://stackoverflow.com/questions/71663375/paginate-pages-to-receive-results-from-tsql                                     Paginate pages to receive results from tSQL
  owner_account_id owner_reputation owner_user_id owner_user_type                                                                     owner_profile_image owner_display_name
1         24733596                5      18621268      registered https://lh3.googleusercontent.com/a/AATXAJwQRtIYRrvKJi1a4AfvTHoE4ht8f_WQ1Qv3jtbr=k-s256            Domin D
2         24733596                5      18621268      registered https://lh3.googleusercontent.com/a/AATXAJwQRtIYRrvKJi1a4AfvTHoE4ht8f_WQ1Qv3jtbr=k-s256            Domin D
3         24733596                5      18621268      registered https://lh3.googleusercontent.com/a/AATXAJwQRtIYRrvKJi1a4AfvTHoE4ht8f_WQ1Qv3jtbr=k-s256            Domin D
                                        owner_link
1 https://stackoverflow.com/users/18621268/domin-d
2 https://stackoverflow.com/users/18621268/domin-d
3 https://stackoverflow.com/users/18621268/domin-d

данные

df <- data.frame (qid = c(71663375, 71674701, 71724524))

Как это можно сделать в цикле for?

Domin D 10.04.2022 19:59

@DominD, пожалуйста, посмотрите обновление

akrun 10.04.2022 20:07

Спасибо, вроде работает. Можно ли сохранить результаты после окончания цикла в один фрейм данных?

Domin D 10.04.2022 20:15

@DominD Предполагая, что он дает те же столбцы, используйте out_dat <- do.call(rbind, out)

akrun 10.04.2022 20:16

Другие вопросы по теме