Добавьте [[j]] или другую информацию, используемую в каждой строке внутри al oop в R - PullRequest
1 голос
/ 07 января 2020

Я сомневаюсь, как включить столбец в "my_data" (my_data$sector), показывающий, что url_list[[j]] или url_info было использовано для этой строки. Каждый URL принесет мне таблицу (35 х 100), и мне нужно показать, какой элемент был источником, когда собирал все вместе.

url_list <- vector()
url_info <- vector()

# then, i feed it. 
total_pages <- 1:5   #for my use, i need almost 100 pages

for (i in total_pages) {
    url_list [i] <- paste('http://www.mylink/result.php?sector=',i,sep = "")
    url_info [i] <- paste('sector_',i,sep = "")
}

url_list
>> [1] "http://www.mylink/result.php?sector=1" "http://www.mylink/result.php?sector=2"
[3] "http://www.mylink/result.php?sector=3" "http://www.mylink/result.php?sector=4"
[5] "http://www.mylink/result.php?sector=5"

url_info
>> [1] "sector_1" "sector_2" "sector_3" "sector_4" "sector_5"

#scraping
my_data <- list()

for (j in seq_along(url_list)) {
    my_data[[j]] <- url_list[[j]] %>% 
        read_html() %>% 
        html_node("table") %>%
        html_table()
}


final_data <- cbind(do.call(rbind, my_data))

Ответы [ 2 ]

1 голос
/ 07 января 2020

У меня нет списка URL с таблицами, которые вы можете привязать, но попробуйте что-нибудь ниже, он добавит URL к последнему столбцу.

Вы должны попробовать это на реальных данных для rbind:

my_data <- list()
url_list=c(
"http://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_population",
"https://en.wikipedia.org/wiki/List_of_U.S._states_and_territories_by_historical_population",
"https://en.wikipedia.org/wiki/List_of_countries_and_dependencies_by_population")

for (j in seq_along(url_list)) {
    my_data[[j]] <- url_list[[j]] %>% 
        read_html() %>% 
        html_node("table") %>%
        html_table() %>%
        mutate(url=url_list[j])
}
0 голосов
/ 07 января 2020

Примерно так должно работать

library(tidyverse)
library(xml2)
pipe_function <- . %>% 
  read_html() %>% 
  html_node("table") %>%
  html_table()

tibble(url_info,url_list) %>% 
  mutate(table = url_list %>% map_dfr(pipe_function))
...