我有一个要获取其Web内容的URL列表,并将其包含在tm corpora中:

library(tm)
library(XML)

link <- c(
"http://www.r-statistics.com/tag/hadley-wickham/",
"http://had.co.nz/",
"http://vita.had.co.nz/articles.html",
"http://blog.revolutionanalytics.com/2010/09/the-r-files-hadley-wickham.html",
"http://www.analyticstory.com/hadley-wickham/"
)

create.corpus <- function(url.name){
doc=htmlParse(url.name)
parag=xpathSApply(doc,'//p',xmlValue)
if (length(parag)==0){
  parag="empty"
}
cc=Corpus(VectorSource(parag))
meta(cc,"link")=url.name
return(cc)
}

link=catch$url
cc <- lapply(link, create.corpus)

这给了我一个语料库的“大列表”,每个URL一个。
将它们一对一地结合在一起工作:
x=cc[[1]]
y=cc[[2]]
z=c(x,y,recursive=T) # preserved metadata
x;y;z
# A corpus with 8 text documents
# A corpus with 2 text documents
# A corpus with 10 text documents

但这对于具有数千个语料库的列表而言变得不可行。
那么如何在保留元数据的同时将一个语料库列表合并为一个语料库呢?

最佳答案

您可以使用do.call调用c:

do.call(function(...) c(..., recursive = TRUE), cc)
# A corpus with 155 text documents

10-07 13:48