【发布时间】:2018-04-21 17:32:29
【问题描述】:
我希望使用R 从单个文件夹中读取多个csv 文件。如果我想阅读我可以使用的每个 csv 文件:
list.files(folder, pattern="*.csv")
例如,看看这些问题:
Reading multiple csv files from a folder into a single dataframe in R
Importing multiple .csv files into R
但是,我只希望一次读取文件的四个子集之一。下面是一个由四个文件组成的示例分组,每个文件用于三个模型。
JS.N_Nov6_2017_model220_N200.csv
JS.N_Nov6_2017_model221_N200.csv
JS.N_Nov6_2017_model222_N200.csv
my.IDs.alt_Nov6_2017_model220_N200.csv
my.IDs.alt_Nov6_2017_model221_N200.csv
my.IDs.alt_Nov6_2017_model222_N200.csv
parms_Nov6_2017_model220_N200.csv
parms_Nov6_2017_model221_N200.csv
parms_Nov6_2017_model222_N200.csv
supN_Nov6_2017_model220_N200.csv
supN_Nov6_2017_model221_N200.csv
supN_Nov6_2017_model222_N200.csv
如果我只想阅读,例如 parms 文件,我尝试以下方法,但不起作用:
list.files(folder, pattern="parm*.csv")
我假设我可能需要使用regex 来读取当前四个组中的给定组,但我不知道。
如何分别阅读四个组?
编辑
我不确定我是否能够从这个问题的答案中获得解决方案:
Listing all files matching a full-path pattern in R
我可能不得不花相当多的时间来复习regex 以将这些答案应用于我的问题。 Mako212 在下面提供的答案非常出色。
【问题讨论】:
-
Listing all files matching a full-path pattern in R 的可能重复项;特别是,我认为该问题的第一个答案将解决您的问题-看起来您需要转义句点(现在您的模式是“parm”,然后出现任何字符,然后是“csv”)跨度>
-
获取所有文件名,list.files按字母顺序返回,然后使用split,使用lapply 或 forloop,例如:
myFiles <- 1:12; split(myFiles, ceiling(seq_along(myFiles)/3)) -
对于“parm”:
list.files(folder, pattern="^parm.*?\\.csv")