繁体   English   中英

如何使用R导入多个PDF文件并更改其名称

[英]How do I import multiple PDF files and change their names using R

我有一个包含+100个PDF文件的文件夹,每个文件都有一个名称。 我也有一个csv文件,该文件具有与PDF匹配的名称,另一列具有数字ID号。 我要做的是将所有这些导入R中,并基于匹配名称(从文件中)添加数字ID,最后使用该新名称导出它们。

我对如何使用csv或txt文件有一个很好的主意,但是我不知道如何处理PDF。 任何人都可以帮我一下。

这是我尝试做什么的尝试...

# Required libraries
library(tm)

# Folder with csv file
setwd("/Users/Home/Desktop/Andrea")
wd <- getwd()
setwd(wd)

# Import CSV file
db <- read.csv("Lista de referencia.csv", header = T, sep = ",")
head(db)

# Folder with the PDF files
setwd("/Users/Home/Desktop/Andrea/Para renombrar")
wd1 <- getwd()
setwd(wd1)

# Import PDF files
files <- list.files(pattern = "\\.pdf$")

DF <- NULL

for (i in 1:length(files)) {

  dat <- readPDF(files[i])

}

由于只需要重命名pdf文件,我们实际上不必读取它们-只需使用file.rename

1)为了使代码保持独立,并且不实际使用任何文件,我们已在file.rename行中注释掉。 您可以在运行代码之前取消注释该行,也可以将cat输出重定向到文件,然后将该文件导出到R中。

# test inputs
db <- data.frame(id = 1:2, name = c("a.pdf", "b.pdf"))
files <- db$name

for(fn in files) {
   i <- match(fn, db$name, nomatch = 0)
   if (i > 0) {
     new_name <- sprintf("%s.%d.pdf", sub(".pdf$", "", fn), db$id[i])
     cat("file.rename('", fn, "', '", new_name, "')\n", sep = "")
     # file.rename(fn, new_name)
   } else warning(fn, " was not renamed as it was not found in db")
}

给予:

file.rename('a.pdf', 'a.1.pdf')
file.rename('b.pdf', 'b.2.pdf')

2)或者,我们可以使用这种向量化方法:

not_found <- setdiff(files, db$name)
if (length(not_found) > 0) 
  warning("These files were not found in db:", toString(not_found))

found <- intersect(files, db$name)
new_names <- sprintf("%s.%d.pdf", sub(".pdf$", "", found), db$id[match(found, db$name)])
# file.rename(found, new_names)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM