在R的pdftools库中传递数组

时间:2016-08-19 11:41:14

标签: r pdf xls

我正在尝试将多个pdf文件转换为excel版本,以便通过vba我可以操作文本并找到一些具体的数字。我写的代码是:

library("pdftools")
setwd("C:/Users/mohit.bansal/Desktop/CSL")
filenames <- list.files(pattern = "*.pdf", all.files = TRUE )
filenames
txt <- pdf_text(filenames[1])
write.table(txt, file = paste(filenames[1], ".xls", sep = ""), sep = " ")
txt <- pdf_text(filenames[2])
write.table(txt, file = paste(filenames[2], ".xls", sep = ""), sep = " ")
txt <- pdf_text(filenames[3])
write.table(txt, file = paste(filenames[3], ".xls", sep = ""), sep = " ")

这里我将所有pdf文件名传递给数组名称文件名,然后逐个传递文件名以将它们转换为excel。我想要的是独立于最后的重复代码行。假设我在一个文件夹中有25个文件,我需要将这些行写入25次。我有任何代码行可以立即传递所有名称。

2 个答案:

答案 0 :(得分:2)

lapply(filesnames, function(i) 
   write.table(pdf_text(i), file = paste(i, ".xls", sep = ""), sep = " "))

答案 1 :(得分:1)

library(pdftools)

setwd("C:/Users/mohit.bansal/Desktop/CSL")

filenames <- list.files(pattern = "*.pdf", all.files = TRUE )

for (fname in filenames) {
  txt <- pdf_text(fname)
  write.table(txt, file = paste(fname, ".xls", sep = ""), sep = " ")
}

但是,控制台中的help("for")会提供有关如何使用for循环的充分信息。

使用*apply系列函数的“问题”是将结果转储回环境会产生副作用(即使只是暂时的)。即使purrrr::walk()返回数据,但至少它是不可见的(并且未经修改地返回原始数据)。