如何使用R

时间:2017-11-06 21:20:18

标签: r pdf import rename

我有一个包含+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])

}

1 个答案:

答案 0 :(得分:1)

由于只是重命名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)