对不起,这可能太涉及一个问题在这里问。我试图重现NYTime方言地图可视化的黑客会话,位于here。我一开始就没问题,但是当我尝试浏览多个页面时遇到了问题。在R中循环多个网页
救人不必再现从幻灯片的信息,这是我到目前为止有:
创建URL地址:
mainURL <- 'http://www4.uwm.edu/FLL/linguistics/dialect/staticmaps/'
stateURL <- 'states.html'
url <- paste0(mainURL, stateURL)
下载和分析
tmp <- getURL(url)
tmp <- htmlTreeParse(tmp, useInternalNodes = TRUE)
提取页面地址并保存到subURL
subURL <- unlist(xpathSApply(tmp, '//a[@href]', xmlAttrs))
删除非国有的名字
subURL <- subURL[-(1:4)]
问题始于我在原始幻灯片24页。幻灯片说,下一步是遍历状态列表并阅读每个问题的正文。当然,我们还需要在过程中保存每个状态的名称。环路初始化用下面的代码:
survey <- vector(length(subURL), mode = "list")
i = 1
stateNames <- rep('', length(subURL))
在此之下的代码,幻灯片说survey
就是大约每状态信息保存列表。我在这里有点困惑,因为survey
确实是一个长度为51的列表,但是每个元素都是NULL。我也对i
在这里做什么感到困惑(这在以后变得很重要)。不过,我可以关注代码的工作情况,并且我认为这个列表稍后会被填充。
这真的是我感到困惑的下一张幻灯片。作为一个例子,它示出了URL如何包含每个状态的名称,使用阿拉斯加作为一个例子:
为第一状态创建URL,并从分配给suburl
suburl <- subURL[1]
删除STATE_从Statename的 suburl
stateName <- gsub('state_','',suburl)
删除的.html
stateName <- gsub('.html','',stateName)
到目前为止,这么好。我可以为每个国家单独做到这一点。但是,我无法弄清楚如何将它变成适用于所有州的循环。该幻灯片只有以下代码:
stateNames[i] <- stateName
这是我卡住的地方。前一张幻灯片分配了1到i
,所以唯一能做的就是获得阿拉斯加(AK)的名称,但其他每个元素都是“”(正如人们所期待的那样,前面定义了stateNames
)。
我曾尝试以下操作:
stateNames <- gsub('state_','',subURL)
stateNames <-gsub('.html','',stateNames)
这并不完全工作,因为这个向量的长度是51,但上面显示的一个的长度仅为1。(后来,我想每个州都有自己的名字,而不是所有州都有相同的州名)。此外,我不知道如何处理stateNames(i) <- stateName
命令。无论如何,我一直在努力,直到最后(包括原创和修改),希望事情最终能够正确对待自己(有时候我的表现与展示会上的内容一样),但最终的结果是刚刚打破)。我认为幻灯片后面会有一个额外的问题(一个对象是以前不存在的子集),但我猜测问题也是由于发生问题更容易出现的。无论如何,我知道这是一个相当复杂的问题,所以我很抱歉,如果它不适合这个网站。我只是卡住了。
我想我想出了一些。问题不在这里,而是在稍后发生。我认为我有工作代码,直到Hack会议的幻灯片30。我意识到这可能涉及到在这里讨论,所以我创建了一个[GitHub Gist](https://gist.github.com/jflanaga/18e7a8b76109220a899a)为我迄今为止。我认为剩下的问题是原始演示文稿中缺少幻灯片,因此这需要一些工作。任何帮助,将不胜感激。 – JoeF 2015-04-01 06:55:11