Преобразовать большой вложенный список, содержащий список из 5 элементов, содержащих символьные векторы различной длины, в кадр данных - PullRequest
0 голосов
/ 09 января 2020

У меня есть большой список, содержащий данные из следующей функции просмотра веб-страниц. Я хочу, чтобы эти списки были преобразованы в data.frame с именами столбцов, равными именам узлов. Как я могу сделать это наиболее эффективно?

Код для создания большого списка (может занять некоторое время):

library(rvest)
library(purrr)
library(tidyverse)

### Scraper

scraper <- function(pages){ #pages = 1200 should be enough to cover the year
bribe <- read_html(paste("http://ipaidabribe.com/reports/paid?page", pages, sep = "=")) 
f <- compose(html_text,html_nodes)
all.nodes <- c(".paid-amount span", ".date", ".location", ".transaction a", ".body-copy-lg")
map_df(all.nodes, ~f(bribe, .x))
}
#pages <- seq(10, 1300, by = 10)
#For MWE
pages <- seq(10, 30, by = 10)
bribe.info <- map(pages,~scraper(.x))

Доступ ко всему объекту: https://www.filehosting.org/file/details/841630/bribe.RData

1 Ответ

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

У меня возникла идея. Но это все равно дает мне ошибку. Может ли кто-нибудь исправить это?

r <- bribe.info %>% 
  map_depth(2, na.omit) %>% 
  map(partial(as_tibble, .name_repair = "universal")) %>% 
  bind_rows(.id = "names" )

Ошибка следующая:

Новые имена: * -> ...1 * -> ... 2 * -> ...3 * - > ... 4 * -> ...5 New names: * -> ... 1 * -> ...2 * -> ... 3 * -> ...4 * -> ... 5 Ошибка: столбцы Tibble должны иметь одинаковую длину, только значения длины один > переработано: * длина 10: столбцы ...1, ...2, ...3, ...4 * длина 11: столбец ...5

Я понимаю, почему возникает проблема, но я не знаю не знаю, как это исправить. В столбце 5 приведены несколько разных векторов с разными длинами векторов.

...