我的目标是将我的代码生成的嵌套列表转换为一个嵌套框架.我有下面的代码,它在一个循环中从几个网址中提取一些数据,并将它们存储在列表中.
library(rvest)
library(XML)
library(purrr)
library(stringr)
library(dplyr)
# declare variables
month = c('07','09')
year = c('2022','2023')
day = c('040','050')
# initialize the empty list
final = list()
# perform the loop
for (i in year) {
for (j in month) {
for (k in day) {
skip_to_next <- FALSE
url <- paste0('https://www.baseball-reference.com/boxes/ARI/ARI', i, j, k, '.shtml')
Sys.sleep(5)
game_path <- tryCatch(url |>
read_html() |>
html_nodes(xpath = '//div[contains(@id, "batting")]') |>
map(\(x) x |>
as.character() |>
str_remove_all("<!--|-->") |>
read_html() |>
html_table()) |>
unlist(recursive = FALSE), error = function(e) {skip_to_next <<- TRUE} )
if(skip_to_next) {next}
url <- read_html(url)
list_url <- url %>%
html_nodes(xpath = "//td/a") %>%
html_text()
List_2_letters = as.list(list_url[nchar(list_url) > 5])
game_path <- mapply(cbind, game_path, "Date" = paste(gsub('.{1}$', '', k), j, i, sep = '-'), SIMPLIFY=F)
game_path <- Map(cbind, game_path, "Team" = List_2_letters)
final[[i]][[j]][[k]] <- game_path
}
}
}
我得到了一堆如下所示的列表:
我想做的是把所有有data.frame
个值的列表组合起来.
我try 了所有这些:
final_2 = map_dfr(final, ~ bind_rows(.x))
final_2 <- as.data.frame(do.call(cbind, final))
final_2 <- do.call("rbind", final)
但它们都只是同时生成两个列表.我真的很困惑如何才能解决这个问题?