首页 > 解决方案 > 在 For 循环 R 中将新列绑定到 DF

问题描述

我有一个循环,逐个遍历团队列表,并将阵容的输出写入.csv。所以我有 31 个单独的 .csv,由teamRename1 列命名,这就是 .csv player_data。我想将所有内容加入一个 DF 并将 1 个 DF 导出到 .csv。所以 31 列。此外,每个团队列/数据框中的行数可能不同。

这是到目前为止的脚本:

library(rvest)
library(dplyr)

# teams
c("Anaheim-Ducks","Arizona-Coyotes","Boston-Bruins","Buffalo-Sabres",
  "Calgary-Flames","Carolina-Hurricanes","Chicago-Blackhawks","Colorado-Avalanche",
  "Columbus-Blue-Jackets","Dallas-Stars","Detroit-Red-Wings","Edmonton-Oilers",
  "Florida-Panthers","Los-Angeles-Kings","Minnesota-Wild","Montreal-Canadiens",
  "Nashville-Predators","New-Jersey-Devils","New-York-Islanders","New-York-Rangers",
  "Ottawa-Senators","Philadelphia-Flyers","Pittsburgh-Penguins","San-Jose-Sharks",
  "St-Louis-Blues","Tampa-Bay-Lightning","Toronto-Maple-Leafs","Vancouver-Canucks",
  "Vegas-Golden-Knights","Washington-Capitals","Winnipeg-Jets"
  ) ->
  teams

for (team in teams){
  tryCatch({

    #null df
    roster <- NULL

    # Get Website
    url <- read_html(paste0('https://www.dailyfaceoff.com/teams/', team,'/line-combinations/stats'))

    # Players in lineup
    player_data <- url %>%
      html_nodes('.player-name') %>%
      html_text()

    # remove numbers and # from name
    player_data <- sub("\\s+#.*", "", player_data)

    # Rename Team
    team_rename <- gsub("-", "_", team, fixed=TRUE)
    teamRename <- gsub("-", " ", team, fixed=TRUE)

    # Print Team
    print(team_rename)

    # create roster dataframe
    roster <- data.frame(Player = player_data)

    # Bind rosters to roster_df
    setwd('//LVS_DB/Users/Mike/Desktop/DB_LVS_SHARE/dailyfaceoffroster')
    write_delim(roster, paste0(teamRename,'.csv'), delim = ',')

  }, error = function(e) {message(paste0(e, "\n"))})
}

标签: rbind

解决方案


推荐阅读