如何修复tm包以奇怪的顺序加载大量文件?

时间:2017-12-15 04:07:50

标签: r tm

我在R中使用tm并处理10k文档。我想通过索引来检查一些,但它们并不匹配文件。为什么tm以奇怪的顺序加载大量文档,以及如何修复/破坏它?这是一个例子:

library(tm)

docs <- c()
for (i in 1:10000) {
  docs <- c(docs, paste('test', i))
}

cor <- VCorpus(VectorSource(docs))

filepath = '/home/nate/Dropbox/MSDS/MSDS682_ncg_F8W2_17/test_cor'
writeCorpus(cor, path = filepath)

cor2 <- VCorpus(DirSource(filepath))

as.character(cor2[[1]])
as.character(cor2[[2]])
as.character(cor2[[3]])
as.character(cor2[[4]])

打印出来:

test 10000
test 1000
test 1001
test 1002

1 个答案:

答案 0 :(得分:3)

由于writeCorpus创建的文件名,导致此结果。在路径中,您会找到名为1.txt, 10.txt, 100.txt, 1000.txt, 1001.txt ... n.txt

的文件

当您使用DirSource阅读它们时,他们会使用该文本排序而非您预期的数字。

要按预期保留排序顺序,可以将filenames参数添加到writeCorpus,例如:

writeCorpus(
  cor,
  path = filepath,
  filenames = paste0(sprintf("%05d", 1:length(cor)), ".txt")
)

这将使您的文件输出00001.txt, 00002.txt, 00003.txt ... n.txt,以及从磁盘返回的导入将以正确的顺序读取。