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

优化帮助(R无法分配向量),r,optimization,memory-management,R,Optimization,Memory Management,我有一个16 GB的ram,在64位版本的R上运行W1064位。 我试图在这个链接上合并一堆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=

我有一个16 GB的ram,在64位版本的R上运行W1064位。 我试图在这个链接上合并一堆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()
}
我没有这方面的很多经验,如果能在优化代码方面提供任何帮助,我将不胜感激。
p、 s将使用read.csv帮助运行它吗?我假设这几列中的日期时间格式可能需要大量资源。我还没有尝试过,因为我需要datetime格式的列。

您可以使用Lappy而不是循环来尝试

files <- list.files(pattern = glob2rx("*.csv"))

df <- lapply(files, function(x) read.csv(x))
df <- do.call(rbind, df)

文件不会在循环中手动调用
gc
。除了绕过优化并可能严重降低执行速度之外,您将无法实现任何其他目标。您的问题是正在循环中生长对象。不要那样做。问题是,如果我试图读取所有文件并将它们保存到变量中,就会出现相同的错误:“无法分配大小的向量…”我试图通过删除已合并的数据帧来解决此问题。我已更改了您的代码,以确保将正确的正则表达式传递到
模式
@zaing如果没有耗尽RAM,我将重试。如果是这样的话,您就没有足够的内存来导入数据。您知道这个正则表达式的作用吗?从
数据中尝试
grepl(“*.csv”,“acsverified.dat”)
rbindlist
。表格是最好的方法。有关更多信息,请参阅本文
files <- list.files(pattern = glob2rx("*.csv"))

df <- lapply(files, function(x) read.csv(x))
df <- do.call(rbind, df)