привязать вектор символов к списку в кадре данных

У меня есть список URL-адресов, и я извлек содержимое следующим образом:

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-адрес [ссылка] с содержимым [extract.content] и преобразовать его в фрейм данных, а затем импортировать его в корпус. Мои попытки терпят неудачу, например. это не работает из-за разной длины строки:

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

Кто-нибудь знает, как объединить символ [вектор] с символом [список]?


person Henk    schedule 03.01.2014    source источник


Ответы (1)


Я бы сделал это, используя пакет 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
person agstudy    schedule 03.01.2014
comment
Re: совет использовать специально созданный синтаксический анализатор, а не регулярное выражение, каждый должен просмотреть принятый ответ на: stackoverflow.com/questions/1732348/ - person IRTFM; 03.01.2014