簡體   English   中英

R readHTMLTable()函數錯誤

[英]R readHTMLTable() function error

嘗試在R包XML中使用readHTMLTable函數時遇到問題。 跑步時

library(XML)
baseurl <- "http://www.pro-football-reference.com/teams/"
team <- "nwe"
year <- 2011
theurl <- paste(baseurl,team,"/",year,".htm",sep="")

readurl <- getURL(theurl)
readtable <- readHTMLTable(readurl)

我收到錯誤消息:

Error in names(ans) = header : 
'names' attribute [27] must be the same length as the vector [21]

我正在通過R Studio 0.96.330運行64位R 2.15.1。 似乎還有其他關於readHTMLTable()函數的問題,但沒有一個解決此特定問題。 有人知道發生了什么嗎?

readHTMLTable()抱怨'names'屬性時,這是一個很好的選擇,它無法將數據與為頭值解析的數據進行匹配。 解決此問題的最簡單方法是完全關閉標頭解析:

table.list <- readHTMLTable(theurl, header=F)

請注意,我將返回值的名稱從“ readtable”更改為“ table.list”。 (由於1.對我和2.不起作用,因此我也跳過了getURL()調用。2. readHTMLTable()知道如何處理URL)。 進行更改的原因是,沒有進一步的指示, readHTMLTable()將搜尋並解析在給定頁面上可以找到的每個HTML表,並為每個表返回一個包含data.frame的列表。

您發送給它的頁面相當豐富,有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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM