R - 在迭代 pdf 任务中合并列表的两个元素

R - Merge two elements of a list in an iterative pdf task

对于 R 中的 pdf 挖掘任务,我需要你的帮助。

我想挖掘文件名为pdf_filenames的1061个多页pdf文件,为此我想提取每个pdf文件前两页的内容。

到目前为止,我已经设法使用 purrr 库中的 map 函数和 pdftools 库中的 pdf_text 函数获取所有 pdf 文件的内容。

> pdfs = pdf_filenames %>% 
        map(pdf_text)

这会输出一个列表,列表中的每个元素代表一个 pdf 文件。 pdfs 列表的结构是:

> str(pdfs)
List of 1061
 $ : chr [1:3] "Content page 1_pdf1" "Content page 2_pdf1" "Content page 3_pdf1"
 $ : chr [1:4] "Content page 1_pdf2" "Content page 2_pdf2" "Content page 3_pdf2" "Content page 4_pdf2"
 $ : chr [1:2] "Content page 1_pdf3" "Content page 2_pdf3"
 .
 .
 .

我想要的输出是:

List of 1061
 $ : chr [1:2] "Content page 1_pdf1 Content page 2_pdf1" "Content page 3_pdf1"
 $ : chr [1:3] "Content page 1_pdf2 Content page 2_pdf2" "Content page 3_pdf2" "Content page 4_pdf2"
 $ : chr [1:1] "Content page 1_pdf3 Content page 2_pdf3"
 .
 .
 .

我试过这个map函数

> pdfs = pdf_filenames %>% 
        map(pdf_text) %>%
        map(c(1,2))

但是返回了一个空列表。

> pdfs
[[1]]
NULL

[[2]]
NULL

[[3]]
NULL
.
.
.

非常感谢您的帮助!谢谢!

我们可以使用 lambda 表达式 (~) 将 pdf_text 分别应用于元素,然后 paste/str_c 前两个元素(基于预期输出)

library(dplyr)
library(pdftools)
library(purrr)
library(stringr)
pdf_filenames %>% 
        map( ~ {
           x1 <- pdf_text(.x)
           c(str_c(head(x1, 2), collapse = " "), tail(x1, -2) )
        })