对不起,这可能是一个问题,在这里问。我正在尝试重现位于here的NYTime方言地图可视化的黑客会话。我一开始就很好,但是当我试图浏览多个页面时,我遇到了一个问题。
为了避免人们不得不从幻灯片中重现信息,这是我到目前为止所做的:
创建网址:
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
在这里所做的事情感到困惑(后来这变得很重要)。尽管如此,我仍然可以按照代码执行的操作,并且我假设列表将在以后填充。
这真是下一张让我感到困惑的幻灯片。作为示例,使用Alaska作为示例显示URL如何包含每个州的名称:
为第一个州创建网址并分配到suburl
suburl <- subURL[1]
从郊区删除州_
stateName <- gsub('state_','',suburl)
从stateName
中删除.html stateName <- gsub('.html','',stateName)
到目前为止,这么好。我可以单独为每个州做这件事。但是,我无法弄清楚如何将其转换为适用于所有状态的循环。幻灯片只有以下代码:
stateNames[i] <- stateName
这是我被困的地方。上一张幻灯片将1分配给i
,所以这样做的唯一方法就是获取阿拉斯加(AK)的名称,但其他所有元素都是“”(考虑到先前已定义stateNames
的方式)。
我确实尝试了以下内容:
stateNames <- gsub('state_','',subURL)
stateNames <-gsub('.html','',stateNames)
这不太有用,因为这个向量的长度是51,但是上面显示的长度只有1.(后来,我希望每个州都有自己的名字,而不是所有的状态到拥有相同的51州名称)。而且,我不知道如何处理stateNames(i) <- stateName
命令。
无论如何,我一直在努力工作(包括原始版本和修改版本),希望事情最终能够自己完成(有时我和演示文稿中的内容一样),但最终还是只是打破)。我认为幻灯片后面会有一个额外的问题(一个对象是之前不存在的子集),但我猜测问题也是由于问题出现得更容易。
无论如何,我知道这是一个非常复杂的问题,所以如果对这个网站不合适,我会道歉。我只是卡住了。