将txt文件读入R并使用tm软件包将其转换为wordcloud时出错

时间:2015-10-01 22:29:00

标签: r data-visualization tm word-cloud

{R版本3.1.2}

我正在尝试创建一个函数,该函数可以获取工作目录中任何txt文件的名称并自动读取它,删除停用词,并创建一个词云。这是迄今为止的代码:

word_cloud <- function(x){
    fileName <- paste("./", x , sep="")
    txt = readLines(fileName, warn=FALSE)
    myCorpus = Corpus(VectorSource(txt))

    myCorpus = tm_map(myCorpus, tolower)
    myCorpus = tm_map(myCorpus, removePunctuation)
    myCorpus = tm_map(myCorpus, removeNumbers)
    myCorpus = tm_map(myCorpus, removeWords, stopwords("english"))

    myDTM = TermDocumentMatrix(myCorpus, control = 
                                            list(minWordLength = 1))

    m = as.matrix(myDTM)

    v = sort(rowSums(m), decreasing = TRUE)

    set.seed(4363)
    wordcloud(names(v), v, min.freq = 50)
}          

当它向下运行到它分配myDTM的行时,它会抛出错误,

“UseMethod中的错误(”meta“,x):   没有适用于'meta'的方法适用于类“character”的对象“

和警告:

“另外:警告信息: 在mclapply(unname(content(x)),termFreq,control):   所有计划的核心在用户代码中遇到错误“

这里发生了什么?

2 个答案:

答案 0 :(得分:1)

再添加一行代码 -

myCorpus <- tm_map(myCorpus, PlainTextDocument)

答案 1 :(得分:0)

readLines可能不会像你想象的那样创建一个长度为1的向量。当我在其中读取文件时,它会创建一个198长度的向量,而VCorpus认为它是198个文档。尝试在readLines之后添加:

iter - 1

当我使用该添加运行代码时,它可以正常工作