читать файлы из подкаталогов

У меня есть подкаталоги с именами от «0001» до «0999», в каждом есть файл с именем «abc.csv». Как мне прочитать все эти файлы в списке?

Вот мой подход:

abcs <- list()
for(i in seq_len(999))
  eval(parse(text=paste0("abcs[[",i,"]] <- read.csv('~/mydir/0000",i,"/abc.csv')")))

Однако я должен сделать это отдельно для каждого количества ведущих нулей.

Должен быть более простой способ, спасибо. Я знаю, что есть также функция list.dir().


person spore234    schedule 11.04.2016    source источник


Ответы (2)


Просто используйте рекурсивный аргумент в list.files

list_of_files <- list.files("~/mydir/", pattern = ".csv", recursive = T)
list_results <- lapply(list_of_files, read.csv)

Это то, что вы ищете?

person Buggy    schedule 11.04.2016
comment
очень мило спасибо. Поскольку у меня есть другие файлы csv в этих каталогах, кроме abc.csv, я указал pattern=abc.csv - person spore234; 11.04.2016
comment
вы также можете использовать fread из пакета data.table, если вам нужно более быстрое чтение. - person Buggy; 11.04.2016

как насчет этого? sprintf("%04d", n) дополняет числа нулями до необходимой длины

abcs <- lapply(1:999, function(n) read.csv(paste0(sprintf("%04d", n),"/abc.csv")))
person chinsoon12    schedule 11.04.2016