我正在尝试从这个网站上阅读该表格。
http://www.databaseolympics.com/games/gamessport.htm?g=1&sp=ATH
问题是我只想要读取第一列(Event)和最后一列(Medal)。 这是我的代码和结果:
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 :(得分:0)
使用list而不是vector:
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