簡體   English   中英

在R中循環多個網頁

[英]Loop multiple webpages in R

抱歉,這里可能涉及一個問題。 我正在嘗試重現位於此處的 NYTime Dialect Map Visualization的Hack Session。 一開始我還可以,但是當我嘗試對多個頁面進行換頁時遇到了問題。

為了使人們不必從幻燈片中復制信息,這是我到目前為止所要做的:

創建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 <- 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命令。

無論如何,我一直堅持到最后(包括原始內容和修改內容),希望事情最終能夠解決問題(有時我得到的內容與演示文稿中的內容相同),但最終事情還是崩潰了。 我認為稍后在幻燈片中還會有另一個問題(對象的子集以前是不存在的),但是我想問題也很容易出現。

無論如何,我知道這是一個涉及很深的問題,因此,如果這不適合該網站,我深表歉意。 我只是被困住了。

我相信我有這個工作。 請參閱要點在此處查看解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM