绑定字符向量以列入数据帧

时间:2014-01-03 17:28:41

标签: r base tm httr

我有一个网址列表,并按如下方式提取内容:

library(httr)
link="http://www.workerspower.net/disposable-workers-the-real-price-of-sweat-shop-labor"
get.link=GET(link)
get.content=content(x2,as="text")
extract.content=str_extract_all(y2,"<p>(.*?)</p>")

这给出了带有文本的“1列表”。每个列表的长度取决于/随URL而变化。 我想将URL [link]与内容[extract.content]绑定,并将其转换为数据帧,然后将其导入到语料库中。 我的尝试失败了,例如。由于行长不同,这不起作用:

all=data.frame(url.vec=c(link1,link2),text.vec=c(extract.content1,extract.content2))

有谁知道如何将字符[vector]与字符[list]结合起来?

1 个答案:

答案 0 :(得分:3)

我会使用XML包执行此操作。然后你应该避免使用带有html / xml文档的正则表达式。请改用xpath。在这里,我创建了一个小函数,它给出了一个创建语料库的链接。

library(XML)
create.corpus <- function(link){
  doc <- htmlParse(link)
  parag <- xpathSApply(doc,'//p',xmlValue)
  library(tm)
  cc <- Corpus(VectorSource(parag))
  meta(cc,type='corpus','link') <- link
  cc
}
## call it 
cc <- create.corpus(link)

检查结果:

 meta(cc,type='corpus')
# $create_date
# [1] "2014-01-03 17:40:50 GMT"
# 
# $creator
# [1] ""
# 
# $link
# [1] "http://www.workerspower.net/disposable-workers-the-real-price-of-sweat-shop-labor"

> cc
# A corpus with 36 text documents