我有多个在不同目录下具有相似名称的文件。该目录的名称类似,例如:dir1 -> dir10。
每个目录下都有名为 f1 - f10 的文件,我想读取每个目录中的第一个文件。
例如,我可以使用 read.csv 吗?因为我需要使用一个变量来表示目录和文件名。
构建文件名的另一种方法是sprintf
file.paths <- sprintf ('dir%i/f1.csv', 1:10)
与expand.grid
:
grid <- expand.grid (1:4, 1:3)
file.paths <- sprintf ('dir%i/f%i.csv', grid [[1]], grid [[2]])
或者,使用Sys.glob
file.paths <- Sys.glob ('dir*/f1.csv')
后者还允许读取这些 dir* 中的所有 f*.csv 文件:
file.paths <- Sys.glob ('dir*/*f*.csv')
如果大卫的问题是正确的,并假设您的工作目录是包含所有子目录的目录......
file.paths <- paste0('dir', 1:10, '/', 'f1.csv')
lapply(file.paths, read.csv)
应该很容易将此示例扩展到您的具体情况。您可能想要探索的唯一其他功能是expand.grid
,如果您在 10 个文件夹中的每个文件夹中有 10 个文件:
combos <- expand.grid(1:10, 1:10)
file.paths <- paste0('dir', combos[,1], '/f', combos[,2], '.csv')