我有一个代码可以用来从yahoo的幻想足球运动员页面抓取球员数据,以便获得运动员列表以及yahoo给予他们的排名。
去年该代码运行良好,但现在运行单独的函数时出现错误:
> temp <- separate(temp,two,c('Note', 'Player','a','b','c','Opp'), sep="\n", remove=TRUE)
Error in `[.data.frame`(x, x_vars) : undefined columns selected
In addition: Warning message:
Expected 6 pieces. Missing pieces filled with `NA` in 1 rows [1].
我无法弄清楚为什么会出现此错误,我尝试分离的列看起来正确。我还有另一个脚本使用此功能执行类似的操作,当我去尝试使用该功能时,它运行良好。 警告“缺少用“ NA”填充的片段”应该不是问题,只是由于未定义的列错误而不会运行。
我用来到达自己所在位置的最小代码是:
library(rvest)## For read.html
library(tidyr)## For separate function
#scrapes the data
url <- 'https://football.fantasysports.yahoo.com/f1/107573/players?status=A&pos=O&cut_type=9&stat1=S_S_2017&myteam=0&sort=PR&sdir=1&count=0'
web <- read_html(url)
table = html_nodes(web, 'table')
temp <- html_table(table)[[2]]
#
colnames(temp) <- c('one','two',3:26)
temp <- separate(temp,two,c('Note', 'Player','a','b','c','Opp'), sep="\n", remove=TRUE)
没有名称的情况下抓取数据,因此我迅速给它们起了名字,包括拼出有问题的列,以便与单独的功能一起使用。我曾尝试在两个引号之间使用引号,但它给出相同的错误。
答案 0 :(得分:2)
在删除temp
的第一行之后,您的代码即可正常工作。
library(dplyr)
colnames(temp) <- c('one','two',3:ncol(temp))
# Use ncol(temp) to make sure the column number is correct
temp2 <- temp %>%
filter(row_number() > 1) %>%
separate(two, c('Note', 'Player','a','b','c','Opp'), sep="\n", remove=TRUE)