我是R的新手并且一直试图弄清楚我可以做些什么来推动这一切。我知道循环不是最好用的东西,但它是我能想到的全部。我已经搜索了这里和网络,并且看到了像tapply这样的选项,但是我无法弄清楚它是否是我做错了什么,或者是不是tapply isn'与此类数据兼容。我认为它是后者,但我是新的,我知道什么。 HA!
我有一个data.frame,用于保存从之前的解析中播放的所有玩家,其数量超过18000行。如果他们去年玩过,下面的脚本将获取该URL并抓取另一个URL。我可以做些什么来使这个更快或更少的记忆猪,因为它约15分钟后常规将我的公羊钉在99%?谢谢你的帮助!
#GET YEARS PLAYED LINKS
yplist = NULL
playerURLs <- paste("http://www.baseball-reference.com",datafile[,c("hrefs")],sep="")
for(thisplayerURL in playerURLs){
doc <- htmlParse(thisplayerURL)
yplinks <- data.frame(
names = xpathSApply(doc, '//*[@id="all_standard_batting"]/div/ul/li[2]/ul/li[. = "2014"]/a',xmlValue),
hrefs = xpathSApply(doc, '//*[@id="all_standard_batting"]/div/ul/li[2]/ul/li[. = "2014"]/a',xmlGetAttr,'href'))
yplist = rbind(yplist, yplinks)
}
yplist[,c("hrefs")]
playerURL中的示例数据文件列表(有2个mel皇后,不同)
X names hrefs
1 1 Jason Kipnis /players/k/kipnija01.shtml
2 2 Tom Qualters /players/q/qualtto01.shtml
3 3 Paul Quantrill /players/q/quantpa01.shtml
4 4 Bill Quarles /players/q/quarlbi01.shtml
5 5 Billy Queen /players/q/queenbi01.shtml
6 6 Mel Queen /players/q/queenme01.shtml
7 7 Mel Queen /players/q/queenme02.shtml
如果这些人中的任何一个人在2014年上场,我上面的脚本会返回一个类似于以下内容的data.frame
X names hrefs
1 1 Jason Kipnis players/gl.cgi?id=kipnija01&t=b&year=2014
2 2 Tom Qualters /players/gl.cgi?id=qualtto01&t=b&year=2014
3 3 Paul Quantrill /players/gl.cgi?id=quantpa01&t=b&year=2014
4 4 Bill Quarles /players/gl.cgi?id=quarlbi01&t=b&year=2014
5 5 Billy Queen /players/gl.cgi?id=queenbi01&t=b&year=2014
6 6 Mel Queen /players/gl.cgi?id=queenme01&t=b&year=2014
7 7 Mel Queen /players/gl.cgi?id=queenme02&t=b&year=2014