我有以下代码,该代码从9个pdf文档中提取表格并生成包含9个元素的列表。
library(tabulizer)
files <- dir(path = ".", pattern = "\\.pdf$", full.names = TRUE, recursive = TRUE)
mdata <- list()
All <- lapply(files,function(i){extract_tables(i, header=TRUE)
})
然后我可以使用此代码从第一个元素(也是第一个pdf)获取数据并提取所需的数据:
col_names_list <- lapply(All[[1]], function(x) x[1,]) # we extract the first row (colnames)
data1 <- lapply(All[[1]], function(x) as.matrix(x[-1, ]))
data2 <- map2(All[[1]], col_names_list, function(x,y) {colnames(x)[0] <- y[0]
x})
searchterms <-c('malaria')#, 'cases')
pattern <- paste(searchterms, collapse = "|")
All[[1]] %>%
map(function(x) x[grepl(pattern, x[,1], ignore.case = TRUE),, drop = FALSE])-> df2
我可以手动将All[[1]
换成All[[2]]
并在第二个元素上运行代码。我如何使它自动化,以便将代码应用于所有9个元素。当前,它仅在列表的第一个元素上运行代码。如果没有[[]]
,则会收到警告:Error in x[1, ] : incorrect number of dimensions
。