【发布时间】:2020-02-15 19:51:21
【问题描述】:
我在为从网站上抓取的 df 设置名称时遇到问题。 html_table 有一堆没有正确列名的列。当我使用purrr::set_names 时,我收到一条错误消息,因为被刮掉的列与html_table 上的列长度不同。有没有人能想到的解决这个问题的方法?缺少的列集似乎是重复数据。它们与data 中的5:10 列相同。示例如下:
library(tidyverse)
# url
url <- "https://legacy.baseballprospectus.com/pitchfx/leaderboards/index.php?hand=&reportType=avg&prp=P&month=&year=2019&pitch=FS&ds=&lim=0"
# get page from URL
page <-
url %>%
xml2::read_html()
# get df from page
data <-
page %>%
rvest::html_table(fill = TRUE) %>%
.[[2]] %>%
data.frame(stringsAsFactors = FALSE) %>%
tbl_df()
# get column names
names <-
page %>%
rvest::html_node("thead") %>%
rvest::html_nodes("th") %>%
rvest::html_text() %>%
stringr::str_trim()
# Add Column names since Scrape does not include
df <-
data %>%
purrr::set_names(names)
#> `nm` must be `NULL` or a character vector the same length as `x`
Created on 2019-10-18 by the reprex package (v0.3.0)
【问题讨论】: