{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): 所有计划的核心在用户代码中遇到错误“
这里发生了什么?
答案 0 :(得分:1)
再添加一行代码 -
myCorpus <- tm_map(myCorpus, PlainTextDocument)
答案 1 :(得分:0)
readLines可能不会像你想象的那样创建一个长度为1的向量。当我在其中读取文件时,它会创建一个198长度的向量,而VCorpus认为它是198个文档。尝试在readLines之后添加:
iter - 1
当我使用该添加运行代码时,它可以正常工作