优化帮助(R 无法分配向量)



我有一个 16 GB 的内存,在 64 位版本的 R 上运行 w10 64 位。我试图在此链接(http://www.nyc.gov/html/tlc/html/about/trip_record_data.shtml(上合并一堆CSV,特别是黄色位编辑:仅适用于一年的atm,但一旦工作,希望导入更多数据

这是我运行的代码

library(readr)
FList <- list.files(pattern = "*.csv")
for (i in 1:length(FList))
  {
  print(i)
  assign(FList[i], read_csv(FList[i]))
  if (i==2) {
    DF<-rbind(get(FList[1]),get(FList[2]))
    rm(list = c(FList[1],FList[2]))
  }
  if (i>2)
    {
    DF<-rbind(DF,get(FList[i]))
    rm(list = FList[i])
  }
  gc()
}

我在第 6 次迭代时收到错误,任务管理器在 rbind 操作期间显示 90% 的内存使用率,但在完成后下降到 60

错误后运行 gc(( 给出以下内容

> gc()
             used    (Mb) gc trigger    (Mb)   max used    (Mb)
Ncells    3821676   204.1   10314672   550.9   13394998   715.4
Vcells 1363034028 10399.2 3007585511 22946.1 2058636792 15706.2
> 

我在这方面没有太多经验,任何优化代码的帮助将不胜感激。附言会通过读取.csv帮助来运行它吗?我假设几列中的日期时间格式可能需要大量资源。还没有尝试过,因为我需要日期时间格式的列。

你可以用lapply而不是循环来尝试

files <- list.files(pattern = glob2rx("*.csv"))
df <- lapply(files, function(x) read.csv(x))
df <- do.call(rbind, df)

另一种方法是将它们附加到命令行而不是 R 中。这应该占用较少的内存。只需谷歌附加csv和您的操作系统适当的命令行工具。