R “文本挖掘”;扫描中:带引号字符串内的EOF“;错误

R “文本挖掘”;扫描中:带引号字符串内的EOF“;错误,r,text-mining,tm,pdftotext,R,Text Mining,Tm,Pdftotext,我需要将文件夹中的24个PDF文件转换为txt文件,以便对它们进行语义分析。我看了一眼问题,然后从那个里开始。然而,在第一次让代码工作后,我改变了一些事情,现在我得到了以下错误: In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings, : EOF within quoted string 正因为如此,下面代码中的body变量中保存的只是24个空格的列表,最后我得到了24个空白文本文件(除了通过将PDF转换为

我需要将文件夹中的24个PDF文件转换为txt文件,以便对它们进行语义分析。我看了一眼问题,然后从那个里开始。然而,在第一次让代码工作后,我改变了一些事情,现在我得到了以下错误:

In scan(file, what, nmax, sep, dec, quote, skip, nlines, na.strings,  :
  EOF within quoted string
正因为如此,下面代码中的
body
变量中保存的只是24个空格的列表,最后我得到了24个空白文本文件(除了通过将PDF转换为txt创建的24个文本文件之外)。我不确定我做错了什么-在某一点上,这段代码起作用了

我已经仔细查看了有关此错误的信息,但这些信息与
read.csv
相关,他们建议的修复(设置
white.space=TRUE
quote=“”
)无效

以下是代码(错误在第20-23行):

#包含期刊文章的文件夹

PDFfolder_path这种情况是否特别发生在一个PDF上?(分别试用)。您是否检查了转换文件的内容?如果没有一个PDF文档,你将很难得到帮助。我已经查看了转换文件的内容,但它们相对较长,我不确定要查找什么。但我为其中一个转换后的文档制作了一个粘贴箱,希望这会有所帮助!嗯,听起来转换的文本文件中确实有坏数据。除非您可以提取复制此行为的部分,否则很难准确地告诉您出了什么问题。您确定需要
scan()
而不是
readLines()
?(注意,它们确实返回不同的向量,但似乎不需要按单词进行打断)嗯,好的。我会设法找到导致这种情况发生的原因。然而,在某一点上,这是很好的工作-当代码运行良好时,R转换和剪切txt文件非常好(并且非常快)。但后来我改变了一些东西(根本不知道是什么),对于每个文件,R开始说类似于
读取10648个项目
,并且开始花费明显更长的时间。
# folder with journal articles
PDFfolder_path <- "~/Dropbox/The Egoist PDFs/PDFs"
# vector of PDF file names
PDFfiles <- list.files(path=PDFfolder_path, pattern="*.pdf", full.names=TRUE)
# location of pdftotext.exe file
converter <- "~/Widgets/PDFConverter/bin64/pdftotext"
# folder with text files
textfolder_path <- "~/Dropbox/The Egoist PDFs/textfiles"

# convert PDFs in origin folder into txt files
lapply(PDFfiles, function(i) {
  system(paste(converter, paste0('"', i, '"')), wait=FALSE)
})
# it takes DropBox a bit of time to catch all of the folders
# without this we only end up with 23 txt files for some reason
Sys.sleep(.5)
txtfiles_in_PDFfolder_path <- list.files(path=PDFfolder_path, pattern="*.txt", full.names=TRUE)

# extracting only the Bodies of the articles
bodies <- lapply(txtfiles_in_PDFfolder_path, function(i){
  j <- paste0(scan(i, what = character()),  collapse = " ")
  regmatches(j, gregexpr("(?<=Published).*?(?=Prepaid Advertisements)", j, perl=TRUE))
})

# write article-bodies into txt files
lapply(1:length(bodies), function(i){
  write.table(bodies[i], file=paste(txtfiles_in_PDFfolder_path[i], "body", "txt", sep="."), quote=FALSE, row.names=FALSE, col.names=FALSE, eol=" ")
})