尝试使用单独的功能时未定义的列

时间:2018-06-26 22:10:59

标签: r tidyr

我有一个代码可以用来从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)

没有名称的情况下抓取数据,因此我迅速给它们起了名字,包括拼出有问题的列,以便与单独的功能一起使用。我曾尝试在两个引号之间使用引号,但它给出相同的错误。

1 个答案:

答案 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)