5

我有多个在不同目录下具有相似名称的文件。该目录的名称类似,例如:dir1 -> dir10。

每个目录下都有名为 f1 - f10 的文件,我想读取每个目录中的第一个文件。

例如,我可以使用 read.csv 吗?因为我需要使用一个变量来表示目录和文件名。

4

2 回答 2

10

构建文件名的另一种方法是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')
于 2012-05-08T16:15:34.727 回答
2

如果大卫的问题是正确的,并假设您的工作目录是包含所有子目录的目录......

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')
于 2012-05-08T16:10:12.493 回答