首页 > 解决方案 > 循环读取多个大文件

问题描述

我正在尝试循环读取几个大文件。所以不要这样做:

library(fst)    
df1 <-read_fst("C:/data1.fst", c(1:2), from = 1, to = 1000)
df2 <-read_fst("C:/data2.fst", c(1:2), from = 1, to = 1000)
df3 <-read_fst("C:/data3.fst", c(1:2), from = 1, to = 1000)

我想做这样的事情:

for(i in 1:3){
df_i <- read_fst("C:/data_i.fst", c(1:2), from = 1, to = 1000)
}

标签: rfor-loop

解决方案


您可以使用在给定目录list.files中生成所有.fst文件,然后遍历它们:

files <- list.files(pattern =".fst")  # .fst files in your current directory
df_list <- rep(list(NA), length(files)) # Init list of DFs
for (i in seq_along(files))
  df_list[[i]] <- fst::read_fst(files[i], ...)

  • 您可以细化patternarglist.files以匹配某个模式,例如pattern = "data_\\d+.fst"匹配data_i.fst
  • 您还可以通过patharg 指定要查看的目录并通过以下方式返回完整文件名full.names

推荐阅读