Я вижу два исправления, которые необходимы.
Ваш второй URL неверен. Вы хотите, я думаю, years[i] + 1
т.е. переместить + 1 вне индексации. Затем вы получаете 2017-2018 и 2018-19.
Во-вторых, существует множество таблиц с различным количеством строк и столбцов, и вы пытаетесь объединить их все, когда вам нужен только первый (стандартный). Если вам нужна только первая таблица, используйте html_node
вместо html_nodes
, т.е. html_node("table")
.
Я также не уверен, настроен ли столбец года таким образом, чтобы вы работали так, как вы в настоящее время получите 2019 и 2020 годы. Я изменился, чтобы вы получили 2017 и 2018. Вам не нужно приращение j
между прочим.
library(rvest)
library(plyr)
library(dplyr)
years = c(2017:2018)
urls = list()
for (i in 1:length(years)) {
url = paste0('https://fbref.com/en/squads/2b390eca/',years[i],'-',years[i] + 1,'/Athletic-Bilbao')
urls[[i]] = url
}
tbl = list()
for (j in seq_along(urls)) {
tbl[[j]] <- urls[[j]] %>%
read_html() %>%
html_node("table") %>%
html_table()
tbl[[j]]$Year = years[j]
}
data = ldply(tbl,data.frame)