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

Из этого процесса:

library(jsonlite)
library(httpuv)
library(httr)

i<-1
results3 <- list();
for (a in 1:2) {
    getURL = paste0("https://api.github.com/search/commits?q=sentimentcommitter-date:2000-01-01..2023-01-20&sort=committer-date&order=asc&per_page=100&page = ",a)
    req <- GET(getURL)
    data <- content(req)
    results3[[i]] <- data$items
    i <- i + 1
    print(i)
}

Как можно преобразовать результат списка результатов3 в фрейм данных, в котором 200 строк и 117 столбцов, как здесь df <- jsonlite::fromJSON(results_json, simplifyDataFrame = TRUE, flatten = TRUE) и length(df$items[[1]])

Есть ли что-то еще, что я должен уточнить?

Erik Brole 22.02.2023 19:00
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Ускорьте разработку веб-приложений Laravel с помощью этих бесплатных стартовых наборов
Laravel - это мощный PHP-фреймворк, используемый для создания масштабируемых и надежных веб-приложений. Одним из преимуществ Laravel является его...
Что такое двойные вопросительные знаки (??) в JavaScript?
Что такое двойные вопросительные знаки (??) в JavaScript?
Как безопасно обрабатывать неопределенные и нулевые значения в коде с помощью Nullish Coalescing
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание ресурсов API Laravel: Советы по производительности и масштабируемости
Создание API-ресурса Laravel может быть непростой задачей. Она требует глубокого понимания возможностей Laravel и лучших практик, чтобы обеспечить...
Как сделать компонент справочного центра с помощью TailwindCSS
Как сделать компонент справочного центра с помощью TailwindCSS
Справочный центр - это веб-сайт, где клиенты могут найти ответы на свои вопросы и решения своих проблем. Созданный для решения многих распространенных...
Асинхронная передача данных с помощью sendBeacon в JavaScript
Асинхронная передача данных с помощью sendBeacon в JavaScript
В современных веб-приложениях отправка данных из JavaScript на стороне клиента на сервер является распространенной задачей. Одним из популярных...
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Как подобрать выигрышные акции с помощью анализа и визуализации на Python
Отказ от ответственности: Эта статья предназначена только для демонстрации и не должна использоваться в качестве инвестиционного совета.
0
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Может быть, немного странно. Но сначала создание json, которое затем сглаживается, а затем привязка их к DF приносит желаемый результат.

js <- jsonlite::toJSON(results3)
df <- jsonlite::fromJSON(js, simplifyDataFrame = TRUE, flatten = TRUE)

ddf <- rbind(df[[1]], df[[2]])

class(ddf)
# [1] "data.frame"
dim(ddf)
# [1] 200 117

Обновлять На ваш комментарий: вы также можете использовать bind_rows из dplyr:

ddf <- df |> bind_rows()

class(ddf)
#[1] "data.frame"

dim(ddf)
#[1] 200 117

Спасибо, если есть еще вариант а не только 2 можно ли сделать эту модификацию?

Erik Brole 22.02.2023 19:37

Да, это должно работать для большего количества опций. Вы должны принять rbind.

MarBlo 22.02.2023 19:44

Спасибо, но если у меня 300 случаев df[[i]] как мне написать, чтобы не было 300 случаев

Erik Brole 22.02.2023 19:54

@Erik Brole: я обновил свой ответ альтернативным способом bind_rows()

MarBlo 22.02.2023 22:33

Per_page=10 для тестирования (т.е. всего 20 строк), jsonlite также может обрабатывать URL-адреса самостоятельно:

url <- "https://api.github.com/search/commits?q=sentimentcommitter-date:2000-01-01..2023-01-20&sort=committer-date&order=asc&per_page=10&page = "
commits <- lapply(1:2, 
                  \(page) jsonlite::fromJSON(paste0(url, page), 
                                             simplifyVector =TRUE, 
                                             flatten = TRUE)$items) |>
  do.call(rbind, args = _)

Полученные результаты:

tibble::glimpse(commits)
#> Rows: 20
#> Columns: 117
#> $ url                                  <chr> "https://api.github.com/repos/dsp…
#> $ sha                                  <chr> "e8f884162cbba5c890bec7a002a9e758…
#> $ node_id                              <chr> "MDY6Q29tbWl0MTQ1OTE2NzM4OmU4Zjg4…
#> $ html_url                             <chr> "https://github.com/dspinellis/li…
#> $ comments_url                         <chr> "https://api.github.com/repos/dsp…
#> $ parents                              <list> [<data.frame[1 x 3]>], [<data.fr…
#> $ score                                <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
#> $ commit.url                           <chr> "https://api.github.com/repos/dsp…
#> $ commit.message                       <chr> "USB HCD: avoid duplicate local_i…
#> ...

Created on 2023-02-22 with reprex v2.0.2

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