Creating a subset of words from a corpus in R

corpus, r, word-cloud

Solution

You can convert your tdm object into a matrix and work with that to get something that `wordcloud` can work with:

library(tm)
library(wordcloud)
# example data from the tm package
data(crude)
tdm <- TermDocumentMatrix(crude,
                      control = list(removePunctuation = TRUE,
                                     stopwords = TRUE))
v <- rowSums(as.matrix(tdm))
names(v) <- rownames(as.matrix(tdm))
v <- sort(v, decreasing=T)

Now with this you can filter out infrequent words with standard subsetting (`[`), or you can use the `min.freq` argument to `wordcloud` when you want to plot:

wordcloud(names(v), v, min.freq=10, scale=c(10,.3))

Problem

I have a 1,500-row vector created from a Twitter search using the XML package. I have then converted it to a Corpus to be used with the tm package. I want to ultimately create a wordcloud with some (the most frequent) of those words, so I converted it to a TermDocumentMatrix to be able to find terms with a minimum frequency. I create the object "a", which is a list of those terms. ``` a <- findFreqTerms(mydata.dtm, 10) ``` The wordcloud package does not work on document matrices. So now, I want to filter the original vector to include only the words included in the "a" object (If I use the object itself, of course, I only have one instance of each of the frequent words). Any suggestions are greatly appreciated.

Original source

Related problems