【问题标题】:Looping and adding to a dataframe in R with a pdf extractor使用pdf提取器循环并添加到R中的数据框
【发布时间】:2017-09-26 06:03:16
【问题描述】:

我想通过 pdf 工具读取 pdf,从中提取一些数据并将其写入 csv。我已经能够成功地为一个 pdf 做到这一点,但我有很多 (440) 要做。我正在尝试编写一个循环,该循环遍历我创建的列表,其中包含我的所有文件路径。问题是它每次都会覆盖。所以我认为我的程序正在做我所要求的,但我没有要求正确的事情!我的代码如下:

temp <-as.list(list.files(pattern = "*.pdf"))

file_path <- file.path(getwd(),temp)%>%as.list()

data_anz<-as.character()

for (i in 1:length(file_path)){
  data_anz<-pdf_text(file_path[[i]])[2]%>%str_split("\n")%>%.[[1]]%>%str_split_fixed("\\s{2,}", n=4)%>%as.data.frame(i:length(file_path))%>%rename(Commodity =V1, Level = V2, Change = V3, Description = V4)

}

我想要实现的是在每次迭代中添加的数据框,而不是过度写入。所以第一次运行,df = 1 行,4 列,下一次运行 2 行等。

我迷路了!但我可以让它为列表中的单个成员工作,它似乎可以在整个列表中工作,但会覆盖。

任何帮助将不胜感激!

【问题讨论】:

    标签: r loops pdf


    【解决方案1】:

    循环的每次迭代都将您的表分配给同一个变量。您可能想尝试类似

    data_anz<-list()
    
    for (i in 1:length(file_path)){
    data_anz[[i]] <- ...
    }
    data_anz_all <- do.call(data_anz, rbind)
    

    将每个表放在列表中自己的位置,然后在最后将它们全部绑定在一起(假设各个框架的列是兼容的)。

    【讨论】:

      猜你喜欢
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-16
      • 2021-10-11
      相关资源
      最近更新 更多