【发布时间】:2014-02-28 05:32:57
【问题描述】:
我想使用 foreach 而不是 for 循环进行并行计算,但我真的不知道怎么做。
所以,我想做的是从一堆网页中获取纯文本,并且我有超过 3000 个链接要处理。我需要将所有文本放入一个大文件中。
我知道 for 循环会起作用,但我什至懒得尝试它需要很长时间。
那么我的问题是,如何将for 循环转换为foreach?
这是我的 for 循环:
library(RCurl)
library(XML)
urls <- scan("file", what = "char", quote = "", sep = "\n") #a vector that contains 3000+ urls
corpus=character()
for (i in 1:length(urls)) { #a loop that the following function will operate on each link
html=getURL(urls[i],followlocation=T)
doc=htmlParse(html,asText=T)
text=xpathSApply(doc,"//p",xmlValue)
corpus=append(corpus,text) #append all the individual text
}
【问题讨论】:
-
如果你没有在循环中增加
corpus,你可以大大加快你的循环。使用lapply/sapply或预分配corpus。如果您使用lapply编写此代码并且不使用Windows,则将其并行化就像putting mc in from of it 一样简单。我也不确定 URL 访问是否可以并行化。您可能必须串行使用getURL。如果你想使用foreach,你应该阅读包小插曲。它们非常易读且易于理解。 -
您使用的是哪个操作系统?
-
@PaulStaab 我正在使用 MacOX
-
@Roland lapply 会从 url 输出文本列表吗?实际上我不确定我是否知道如何使用 lapply,但我会尝试。谢谢!
标签: r foreach parallel-processing