申请列表R中的多个元素(可能是循环吗?)

时间:2018-10-08 15:07:41

标签: r lapply

我有以下代码,该代码从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

0 个答案:

没有答案