当readHTMLTable()
抱怨 'names' 属性时,可以肯定的是,它在将数据与为标题值解析的内容匹配时遇到了问题。解决此问题的最简单方法是完全关闭标头解析:
table.list <- readHTMLTable(theurl, header=F)
请注意,我将返回值的名称从“readtable”更改为“table.list”。(我也跳过了这个getURL()
电话,因为 1. 它对我不起作用, 2. readHTMLTable() 知道如何处理 URL)。更改的原因是,如果没有进一步的指示,readHTMLTable()
它将搜索并解析它可以在给定页面上找到的每个 HTML 表,返回一个包含每个数据帧的列表。
您发送后的页面相当丰富,有8个单独的表格:
> length(table.list)
[1] 8
如果您只对页面上的单个表格感兴趣,您可以使用该which
属性来指定它并直接将其内容作为 data.frame 接收。
如果它卡在您不感兴趣的表格上,这也可以解决您最初的问题。许多页面仍然使用表格进行导航、搜索框等,因此值得先看一下该页面。
但在您的示例中不太可能出现这种情况,因为它实际上扼杀了除其中一个之外的所有内容。万一星星对齐并且您只对页面上成功启动的第三个表感兴趣(传递统计信息),您可以像这样抓住它,保持标题解析:
> passing.df = readHTMLTable(theurl, which=3)
> print(passing.df)
No. Age Pos G GS QBrec Cmp Att Cmp% Yds TD TD% Int Int% Lng Y/A AY/A Y/C Y/G Rate Sk Yds NY/A ANY/A Sk% 4QC GWD
1 12 Tom Brady* 34 QB 16 16 13-3-0 401 611 65.6 5235 39 6.4 12 2.0 99 8.6 9.0 13.1 327.2 105.6 32 173 7.9 8.2 5.0 2 3
2 8 Brian Hoyer 26 3 0 1 1 100.0 22 0 0.0 0 0.0 22 22.0 22.0 22.0 7.3 118.7 0 0 22.0 22.0 0.0