循环一个函数以在 R

问题描述

这里几乎是绝对的初学者。

我有一个在 PDF 中抓取表格的函数(我从 here获取并稍微调整了该函数)。

功能如下。

scrape_pdf <- function(tables,table_number,number_columns,column_names) {
  data <- tables[table_number]
  data <- trimws(data)
  data <- strsplit(data,"\n")
  data <- data[[1]]
  data <- data[grep("XXX",data):grep("XXX",data)]
  data <- data[2:31]
  data <- str_split_fixed(data," {2,}",number_columns)
  data <- data.frame(data,stringsAsFactors = FALSE)
  names(data) <- column_names
  
  return(data)
}

我的 PDF 有 198 页。每页都有一个表格,每页上的格式都相同。我想抓取这 198 页,然后将结果整理到一个数据框中。

我想通过以下方式循环这个函数,但不起作用。

x <- c(1:198)
while(x<=198) {
table[[x]] <- scrape_pdf(tables = mytable,table_number = x,number_columns = 3,column_names = c("XXX","XXX","XXX"))
x = x+1
}

当我运行它时,我收到以下错误消息。

Error in `[[<-`(`*tmP*`,i,value = value) : 
  recursive indexing Failed at level 3
In addition: Warning message:
In while (x <= 198) { :
  the condition has length > 1 and only the first element will be used

我确定我至少遗漏了一个或多个步骤。将不胜感激任何对如何解决此问题或如何更有效地执行此操作有想法的人。 (我知道 tabulizer 函数非常方便,但我在安装 Java 时遇到了问题)。

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)