0

readHTMLTableRパッケージXMLで関数を使用しようとすると、問題が発生します。走っているとき

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]

RStudio0.96.330を介して64ビットR2.15.1を実行しています。readHTMLTable()関数について尋ねられた質問は他にもいくつかあるようですが、この特定の質問に対処したものはありません。誰かが何が起こっているのか知っていますか?

4

1 に答える 1

1

readHTMLTable()'names'属性について不平を言うときは、データをヘッダー値の解析対象と一致させるのに問題があるのは間違いありません。これを回避する最も簡単な方法は、ヘッダーの解析を完全にオフにすることです。

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

戻り値の名前を「readtable」から「table.list」に変更したことに注意してください。getURL()( 1.それは私にとっては機能せず、2。readHTMLTable()はURLの処理方法を知っているので、私も呼び出しをスキップしました)。変更の理由は、それ以上の指示なしreadHTMLTable()に、指定されたページで検出できるすべてのHTMLテーブルを検索して解析し、それぞれのdata.frameを含むリストを返すためです。

送信したページはかなり豊富で、8つの個別のテーブルがあります。

> length(table.list)
[1] 8

ページ上の単一のテーブルのみに関心がある場合は、which属性を使用してテーブルを指定し、そのコンテンツをdata.frameとして直接受け取ることができます。

これにより、興味のないテーブルが詰まっていた場合にも、元の問題が解決する可能性があります。多くのページでは、ナビゲーションや検索ボックスなどにテーブルが使用されているため、最初にページを確認する価値があります。

しかし、実際には1つを除いてすべてが詰まっているため、この例では当てはまらない可能性があります。万が一、星が整列し、ページ上の正常にオールドされた3番目のテーブル(統計を渡す)にのみ関心がある場合は、ヘッダーの解析を続けながら、次のように取得できます。

> 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
于 2012-09-02T14:03:49.240 に答える