【问题标题】:How to read data files, save and delete one by one in RR中如何读取数据文件、保存和删除
【发布时间】:2020-09-30 15:03:03
【问题描述】:

我在“C:\Data”中有 200 个 CSV 数据文件(它们的名称是 xxx.csv)。我想将所有这些 csv 文件转换为 RData 文件。但是,它们每个都很大,我无法将它们全部读入 R。

如何将这些文件读入 R,保存到 RData 文件,然后使用函数将它们从 R 环境中一一删除?

【问题讨论】:

    标签: r


    【解决方案1】:

    试试这个:

    csv2rdata <- function(filename) {
      nm <- sub("\\.csv$", "", basename(filename))
      assign(nm, data.table::fread(filename), envir = environment())
      save(list = nm, file = paste0(dirname(filename), "/", nm, ".RData"), envir = environment())
    }
    
    dir("C:\\Data", pattern = "*.csv", full.names = TRUE) %>% lapply(csv2rdata)
    

    【讨论】:

      【解决方案2】:

      我会尝试以下方法,假设您已经有一个包含文件名的列表:

      library(data.table)
      
      for (i in 1:length(my_files)) {
        df <- fread(myfiles[i])
        save(df, ....) # use your specification for saving including the filename
      }
      

      【讨论】:

      • 什么不起作用?缺少文件列表?或具有保存功能的东西?我不知道你想如何保存文件。如果您显示您的保存功能会很好
      【解决方案3】:

      using this link。您可以使用data.table 包来读取大量数据。请记住,R 用于内存处理,因此如果您有大约 5GB-10GB 的大数据,则需要一点硬件。然后您可以将它们保存为 .RData 文件,然后在循环中使用 rm() 将它们删除。

      library(data.table)
      library(tidyverse)
      
      tbl_fread <- 
          list.files(pattern = "*.csv") %>% 
          map_df(~fread(.))
      

      【讨论】:

      • 仅供参考 map_df 是来自 purrrmap_dfr 的无证别名。它还需要安装dplyr
      • 我有 200 个文件.....我无法一起阅读它们
      • list.files(pattern = "*.csv") 不会仅列出相应目录中的所有文件,然后您将在函数/循环中逐一读取它们
      猜你喜欢
      • 2021-08-24
      • 1970-01-01
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-06-18
      • 2016-11-09
      • 1970-01-01
      相关资源
      最近更新 更多