2016-07-22 98 views
0

我想从本网站读取表格。只读一些列时使用readHTMLTable从网站获取表格

http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH

问题是,我只是想在第一列(事件)和最后一列(奖章)被读取。 这是我的代码和结果:

temp_URL<-'http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH' 
tab<-readHTMLTable(temp_URL, which=3,colClasses = c('factor',NULL,NULL,NULL,'factor')) 
head(tab) 

    Event   Athlete Country Result Medal 
1 100m Men  Tom Burke  USA  12.0 GOLD 
2   Fritz Hofmann  DEU 12.2 est. SILVER 
3    Francis Lane  USA  12.6 BRONZE 
4   Alajos Szokolyi  HUN 12.6 est. BRONZE 
5 400m Men  Tom Burke  USA  54.2 GOLD 
6   Herbert Jamison  USA  n/a SILVER 

正如你可以看到它返回表的所有列。我在R文档上看到,使用colClasses并指出Null值应该让R忽略该列,但它不适用于我。我知道,一旦你有R中这是很容易,只是创建具有所需列的新数据帧中的数据:

tab<-data.frame(tab$Event,tab$Medal) 
    head(tab) 
     tab.Event tab.Medal 
    1 100m Men  GOLD 
    2    SILVER 
    3    BRONZE 
    4    BRONZE 
    5 400m Men  GOLD 
    6    SILVER 

我真的想避免这种额外的步骤,并在其中找到只有所需的方式数据进入R,原因是因为这个页面是需要读取数千页的代码的一部分,并且多次运行时额外的步骤可能是耗时的。

回答

0

使用列表,而不是载体:

temp_URL<-'http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH' 

tab<-readHTMLTable(temp_URL, which=3,colClasses = list("factor",NULL,NULL,NULL,"factor"),stringsAsFactors = FALSE) 

head(tab) 
       V1  V2 
     1 100m Men GOLD 
     2   SILVER 
     3   BRONZE 
     4   BRONZE 
     5 400m Men GOLD 
     6   SILVER 
+0

它worked.Thanks – Lee