【问题标题】:Read several PDF files into R with pdf_text使用 pdf_text 将几个 PDF 文件读入 R
【发布时间】:2020-01-24 17:16:50
【问题描述】:

我的目录中有几个 PDF 文件。我以前下载过,目前没什么大不了的。

我想在 R 中读取所有这些文件。我的想法是使用“pdftools”包中的“pdf_text”函数并编写如下公式:

mypdftext <- pdf_text(files)

其中“文件”是一个收集所有 PDF 文件名的对象,因此我不必手动编写所有文件名。因为我实际上已经下载了很多文件,所以我会避免写:

mypdftext <- pdf_text("file1.pdf", "file2.pdf", and many more files...)

为了创建对象“pdflist”,我使用了“files

但是“文件”不适用于 pdf_text 函数,可能是因为它是一个向量。我能做些什么呢?

【问题讨论】:

  • 您可以Map 覆盖不同的文件名:Map(pdf_text, files),这将返回一个列表。这取决于您希望如何将所有这些文件组合在一起,以了解您接下来要做什么。
  • 您可以尝试使用apply-style 函数,例如mypdftexts &lt;- lapply(files, {function(x) pdf_text(x)})。这将返回一个列表,其中每个元素都是 pdf 文件中的文本。

标签: r pdf vector


【解决方案1】:

也许这不是最好的解决方案,但这对我有用:

library(pdftools)

# Set your path here.
your_path = 'C:/Users/.../pdf_folder'
setwd(your_path)
getwd()



lf = list.files(path=getwd(), pattern=NULL, all.files=FALSE,
           full.names=FALSE)


#Creating a list to iterate 
my_pdfs = {}

#Iterate. Asssign each element of list files, to a list. 
for (i in 1:length(lf)){my_pdfs[i] <- pdf_text(lf[i])}

#Calling the first pdf of the list.
my_pdfs[1] 

然后,您可以将每个 pdf 文件分配给您想要的任何文件。当然,每个文件都会保存在列表的每个元素中。这能解决您的问题吗?

【讨论】:

    【解决方案2】:

    您可以尝试在包含每个 pdf 文件 (files) 位置的向量上使用 lapply。我建议使用list.files(..., full.names = T) 来获取每个 pdf 文件的完整位置。这应该可以。

    mypdfs<-lapply(files, pdf_text)
    

    【讨论】:

    • 谢谢,我以前用过它并且效果很好,但是它对我的其余代码没有多大帮助。也许我应该改写一下......在上面的代码中,list是一个字符向量,但是函数pdf_text需要一个字符串......所以我应该将一个字符转换为一个字符串?
    猜你喜欢
    • 2019-11-02
    • 1970-01-01
    • 2012-02-29
    • 2014-12-09
    • 2019-02-18
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多