【问题标题】:Error reading txt file into R and turning it into a wordcloud using the tm package将 txt 文件读入 R 并使用 tm 包将其转换为 wordcloud 时出错
【发布时间】:2015-10-01 22:28:59
【问题描述】:

{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) 中的错误: 没有适用于“字符”类对象的“元”方法

和警告:

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

这是怎么回事?

【问题讨论】:

  • 如果没有一些数据,我无法重现您的错误。你能给出结果:txt = readLines(fileName, warn=FALSE);输入(头(txt))
  • c("本文下载者:[加州大学圣地亚哥分校]", "On: 01 April 2014, At: 13:41", "Publisher: Routledge", "Informa Ltd在英格兰和威尔士注册 注册号:1072954 注册办事处:Mortimer House, 37-41 Mortimer Street, London W1T 3JH, UK", "Ethics, Policy & Environment", "出版详情,包括作者说明和订阅信息:@987654321 @")
  • 您也可以在这里自己下载:drive.google.com/file/d/0B0NcCsbmnPd1em1FR1d3V1NubDA/…

标签: r data-visualization tm word-cloud


【解决方案1】:

再添加一行代码-

myCorpus <- tm_map(myCorpus, PlainTextDocument)

【讨论】:

    【解决方案2】:

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

    paste(txt, collapse = " ") -> txt
    

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

    【讨论】:

    • 如在下一行?
    • 因为现在它正在抛出,“错误:inherits(doc, "TextDocument") is not TRUE "
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-30
    • 2023-04-08
    • 2012-06-17
    相关资源
    最近更新 更多