[英]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.