如何在附加数据时仅跨多个csv使用公共列

时间:2018-06-07 14:11:25

标签: r out-of-memory

我目前正在使用以下功能读入并组合R中的几个(7)csv。

csv_append <- function(file_path = filePath){

  files <- grep(list.files(path = file_path,full.names = TRUE), pattern="final_data_dummied_", value=T)
  ###Load all files into a list of dataframes
  df_list = lapply(files,fread,nThread = 4)
  DT = rbindlist(df_list,fill = TRUE)
  # Convert data.table to dataframe
  df_seg = setDF(DT)
  rm(list = c('DT','df_list'))
  # Replace missing values with 0
  df_seg[is.na(df_seg)] <- 0
  return (df_seg)
}

然而原始文件很大(.5百万行和~3500列)。列数从3400到3700不等,当我合并这些文件时,R会出现内存错误:cannot allocate vector of size 85Gb 我想如果我从所有csvs中获取交集列,并且只读取每个csv中的那些列,它可能会解决问题。 但是我不知道在阅读文件时我怎么能这样做。

有人可以帮帮我吗?

0 个答案:

没有答案