【问题标题】:for loop to read.csv() several CSV at the same timefor 循环同时读取.csv() 几个 CSV
【发布时间】:2018-02-02 15:30:56
【问题描述】:

我希望遍历 CSV 文件的 4 个不同文件夹,将它们分配给不同的对象,并在以后的函数中使用所有 4 个数据框。所有文件夹都有相同数量的 CSV 文件 (400)。

milk_contents <- list.dir(milk folder)
cereal_contents <- list.dir (cereal)
OJ_contents <- list.dir(OJ)
cat_contents <- list.dir(cat)
milk_loc <- "C/Desktop/milk"
cereal_loc <- "C/Desktop/cereal"
OJ_loc <- "C/Desktop/OJ"
cat_loc <- "C/Desktop/cat"

类似:

for(sheet in milk){
milk_sheet <- read.csv(paste0(milk_loc,"/",sheet),stringasfactors = false)
   for(file in cereal){
       cereal_file <- read.csv(paste0(cereal_loc,"/",file),stringasfactors = false)
      for(cup in OJ){
       OJ_cup <- read.csv(paste0(OJ_loc,"/",cup),stringasfactors = false)
           for(paw in cat){
       cat_paw <- read.csv(paste0(cat_loc,"/",paw),stringasfactors = false)
       ex_function(milk_sheet, cereal_file, OJ_cup, cat_paw)
}}}}

我认为可能有更优雅的解决方案 -

【问题讨论】:

  • @csgroen - 相关,但是,我的问题要求来自 不同 文件夹的 csv - 请在发表评论之前阅读问题。
  • ex_function 是做什么的?
  • 事实上,如果你这样做,你最终会调用 ex_function 400^4 次。那是你想做的吗?还是应该调用 ex_function 400 次?
  • 它使用所有数据帧并将数据重新格式化为稍后的函数。不过,我认为这无关紧要。我所需要的只是读入 R 的单独 csvs。

标签: r loops csv


【解决方案1】:

现在您已经设置了一组循环组合,即每个文件都将由ex_function 与每个其他文件(来自它们各自的文件夹)进行分析。但听起来你想运行ex_function 400 次,即在每组四个文件上按它们在目录中的位置分组。如果这是对情况的准确评估,请继续阅读,如果不是,请澄清。

最简单的方法是遍历一个目录的索引并在相同的索引位置打开所有四个文件(假设牛奶中的文件 1 需要与 cat、oj 和谷物的文件 1 进行比较)。

for (i in seq_along(milk_contents)){
  milk_sheet <- read.csv(paste0(milk_loc,"/",milk_contents[i]),stringasfactors = false)
  cereal_file <- read.csv(paste0(cereal_loc,"/",cereal_contents[i]),stringasfactors = false)
  OJ_cup <- read.csv(paste0(OJ_loc,"/",OJ_contents[i]),stringasfactors = false)
  cat_paw <- read.csv(paste0(cat_loc,"/",cat_contents[i]),stringasfactors = false)
  ex_function(milk_sheet, cereal_file, OJ_cup, cat_paw)
}

这假设每个目录都有完全相同数量的文件。

【讨论】:

  • 我就是这么想的!!感谢您更好地表达它! :)
猜你喜欢
  • 2013-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
相关资源
最近更新 更多