Как я могу прочитать несколько файлов из нескольких каталогов в R для обработки? - PullRequest
7 голосов
/ 11 сентября 2011

Я занимаюсь симуляцией и мне нужно обработать и сохранить результаты из нескольких текстовых файлов.У меня есть данные, организованные таким образом, что есть подкаталоги и внутри каждого подкаталога, мне нужно обработать и получить индивидуальные результаты для 1000 файлов данных.Это очень легко сделать в SAS с помощью макросов.Тем не менее, я новичок в R и не могу понять, как это сделать.Вот то, что я пытаюсь сделать.

DATA Folder-> DC1 -> DC1R1.txt ... DC1R1000.txt
              DC2 -> DC2R1.txt ... DC2R1000.txt

Любая помощь будет принята с благодарностью!

Ответы [ 4 ]

8 голосов
/ 11 сентября 2011

Я сейчас не рядом с компьютером с R, но прочитал справку по функциям, связанным с файлами:

Функция dir выведет список файлов и каталогов.У него есть рекурсивный аргумент.list.files является псевдонимом для dir.Функция file.info сообщит вам (среди прочего), является ли путь каталогом, а file.path объединит части пути.

Функции basename и dirname также могут быть полезны.

Обратите внимание, что все эти функции векторизованы.

EDIT Теперь на компьютере, вот пример:

# Make a function to process each file
processFile <- function(f) {
  df <- read.csv(f)
  # ...and do stuff...
  file.info(f)$size # dummy result
}

# Find all .csv files
files <- dir("/foo/bar/", recursive=TRUE, full.names=TRUE, pattern="\\.csv$")

# Apply the function to all files.
result <- sapply(files, processFile)
4 голосов
/ 11 сентября 2011

Если вам нужно выполнить один и тот же анализ для каждого из файлов, вы можете получить к ним доступ за один раз, используя list.files(recursive = T). Это предполагает, что вы уже установили свой рабочий каталог на Data Folder. recursive = T также перечисляет все файлы в подкаталогах.

2 голосов
/ 15 марта 2017

filenames <- list.files("path/to/files", recursive=TRUE) Это даст вам все файлы, находящиеся в одной папке и подпапках под ней.

0 голосов
/ 11 сентября 2011

Вы можете использовать функцию Perl glob (), чтобы получить список файлов и отправить его в R, используя, например, интерфейс RSPerl .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...