在 R 中使用 TM 包的 VCorpus 时遇到的错误
Posted
技术标签:
【中文标题】在 R 中使用 TM 包的 VCorpus 时遇到的错误【英文标题】:Error faced while using TM package's VCorpus in R 【发布时间】:2018-05-04 12:43:58 【问题描述】:我在使用 R 处理 TM 包时遇到以下错误。
library("tm")
Loading required package: NLP
Warning messages:
1: package ‘tm’ was built under R version 3.4.2
2: package ‘NLP’ was built under R version 3.4.1
corpus <- VCorpus(DataframeSource(data))
错误:all(!is.na(match(c("doc_id", "text"), names(x)))) 不正确
尝试了各种方法,例如重新安装软件包,使用新版本的 R 更新,但错误仍然存在。对于相同的数据文件,相同的代码在具有相同 R 版本的另一个系统上运行。
【问题讨论】:
【参考方案1】:当我将tm
包更新到 0.7-2 版本时,我遇到了同样的问题。
我查找了DataframeSource()
的详细信息,它提到:
第一列必须命名为“doc_id”并包含每个文档的唯一字符串标识符。第二列必须命名为“文本”。
详情
数据框源将数据框 x 的每一行解释为一个文档。第一列必须命名为“doc_id”并包含每个文档的唯一字符串标识符。第二列必须命名为“text”,并包含一个表示文档内容的“UTF-8”编码字符串。可选的附加列用作文档级元数据。
我用下面的代码解决了:
df_cmp<- read.csv("test_file.csv",stringsAsFactors = F)
df_title <- data.frame(doc_id=row.names(df_cmp),
text=df_cmp$English.title)
您可以尝试将列名更改为doc_id
和text
。
【讨论】:
【参考方案2】:我在使用BTM
包时也遇到了这个错误。正如Eva 所指出的,它可能与您的列标题有关(必须分别为doc_id
和text
)。但是,就我而言,这是因为我的 doc_id
值已损坏并且不再是唯一的。如果错误仍然存在,请尝试检查您的 doc_id 值以确保它们正确递增。
【讨论】:
以上是关于在 R 中使用 TM 包的 VCorpus 时遇到的错误的主要内容,如果未能解决你的问题,请参考以下文章