преобразовать корпус в data.frame в R

Я использую пакет tm для применения основы, и мне нужно преобразовать полученные данные в фрейм данных. Решение для этого можно найти здесь R tm package vcorpus: ошибка при преобразовании корпуса в кадр данных, но в моем случае у меня есть содержимое корпуса как:

[[2195]]
i was very impress

вместо

[[2195]]
"i was very impress"

и из-за этого, если я обращусь

data.frame(text=unlist(sapply(mycorpus, `[`, "content")), stringsAsFactors=FALSE)

результат будет

<NA>.

Любая помощь высоко ценится!

Код ниже в качестве примера:

sentence <- c("a small thread was loose on the sandals, otherwise it looked good")
mycorpus <- Corpus(VectorSource(sentence))
mycorpus <- tm_map(mycorpus, stemDocument, language = "english")

inspect(mycorpus)

[[1]]
a small thread was loo on the sandals, otherwi it look good

data.frame(text=unlist(sapply(mycorpus, `[`, "content")), stringsAsFactors=FALSE)

 text
1 <NA>

person Cristina Cerqueira    schedule 25.08.2014    source источник
comment
Не уверен, но может попробовать deparse в списке корпусов?   -  person Rich Scriven    schedule 25.08.2014
comment
Благодарю вас! нет... я не могу управлять с помощью deparse...   -  person Cristina Cerqueira    schedule 25.08.2014
comment
Не могли бы вы добавить код с данными, чтобы создать минимальный рабочий пример? Из того, что я вижу до сих пор, идея @RichardScriven звучит вполне разумно.   -  person abel    schedule 25.08.2014
comment
Конечно! под не могу справиться я имел в виду, что я не смог применить функцию deparse...   -  person Cristina Cerqueira    schedule 25.08.2014
comment
Ой, извини. просто попробуйте сначала на одном элементе. Например, deparse(data[[2195]])   -  person Rich Scriven    schedule 25.08.2014
comment
Нет, прости! :) Я тоже не работаю.. Я думаю, что проблема должна быть в другом, потому что в примере, который я даю в конце, ввод представляет собой строковый вектор... так что он должен работать... любые идеи ?   -  person Cristina Cerqueira    schedule 25.08.2014
comment
Я решил! Я применил обходной путь... Если я применю gsub к корпусу, результат будет класс = символ. Меня устраивает. Спасибо за вашу помощь!   -  person Cristina Cerqueira    schedule 25.08.2014
comment
@CristinaCerqueira - вы должны добавить это в качестве ответа для будущих искателей SO.   -  person Rich Scriven    schedule 26.08.2014


Ответы (2)


Применяя

gsub("http\\w+", "", mycorpus)

вывод имеет class = character, поэтому он работает в моем случае.

person Cristina Cerqueira    schedule 25.08.2014
comment
Я был бы полезен, если бы вы написали полный код для преобразования. В противном случае читатели оставлены на метод проб и ошибок. - person Simone; 06.05.2016

Я не могу воспроизвести проблему, используя tm_0.6 в R 3.1.0 на Mac:

> data.frame(text=unlist(sapply(mycorpus, `[`, "content")), stringsAsFactors=FALSE)
                                                                 text
content a small thread was loos on the sandals, otherwis it look good

Если бы я получил эти нежелательные результаты, я бы немедленно попробовал:

 data.frame(text=unlist(sapply(mycorpus, `[[`, "content")), stringsAsFactors=FALSE)

... рассуждая о том, что, поскольку 'constent' является именем элемента списка, [['content']] должен был иметь возможность последовательного извлечения. Мне также показалось, что unlist может не понадобиться при таком подходе:

> data.frame(text=sapply(mycorpus, `[[`, "content"), stringsAsFactors=FALSE)
                                                           text
1 a small thread was loos on the sandals, otherwis it look good
person IRTFM    schedule 25.08.2014
comment
Спасибо! Если я применю ваше предложение, оно выдаст мне ошибку Error in FUN(X[[1L]],...) : нижний индекс за пределами... Но я нашел обходной путь для того, что мне нужно. - person Cristina Cerqueira; 25.08.2014
comment
Я думаю, что у вас может быть устаревшая или сломанная установка tm. - person IRTFM; 25.08.2014