Как сохранить результаты из-за oop при получении html сайтов в R? - PullRequest
1 голос
/ 15 апреля 2020

Мне было интересно, как хранить и извлекать данные из a для l oop, когда нужно очистить несколько веб-сайтов в R.

library(rvest)
library(dplyr)
library(tidyverse)
library(glue)

cont<-rep(NA,101)

countries <- c("au","at","de","se","gb","us")

for (i in countries) {
sides<-glue("https://www.beeradvocate.com/beer/top-rated/",i,.sep = "") 
html <- read_html(sides)
cont[i] <- html %>% 
  html_nodes("table") %>% html_table()
}

table_au <- cont[2] [[1]]

Идея состоит в том, чтобы получить список для каждого веб-сайта соответственно. Если я запустил свой код, table_au просто покажет мне NA, предположительно, потому что результаты l oop не сохраняются.

Было бы замечательно, если бы кто-то мог мне помочь.

BR,

Марко

1 Ответ

1 голос
/ 15 апреля 2020

Мы можем извлечь все таблицы в списке.

library(rvest)

url <- "https://www.beeradvocate.com/beer/top-rated/"
temp <- purrr::map(paste0(url, countries), ~{
          .x %>% 
           read_html() %>%
           html_nodes("table") %>% 
           html_table(header = TRUE) %>% .[[1]]
})

Если вам нужны данные в виде разных фреймов данных, таких как tab_au, tab_at, мы можем назвать список и использовать list2env для получения данных отдельно.

names(temp) <- paste0('tab_', countries)
list2env(temp, .GlobalEnv)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...