Страница 1 из 1

батч-обработка текстовых файлов в R

Добавлено: 12 авг 2009, 22:33
Анна
добрые день всем,

скажите пожалуйста, а нет ли у кого примера на R для обработки в батч-режиме всех файлов в директории? не важно даже что именно скрипт делает, просто по сути - чтобы считывал список файлов из директории, читал поочередно в переменную, делал какую-то функцию и затем экспортировал результат тоже в текстовый файлик.
Буду очень благодарна за помощь и пример!

Re: батч-обработка текстовых файлов в R

Добавлено: 12 авг 2009, 22:38
Максим Дубинин

Код: Выделить всё

inputdir = "D:\\input\\"

#ищем все файлы c подстрокой "csv" в папке Input
trainingsets = list.files(path=inputdir, pattern="csv")

#создаём новый фрейм данных, куда будем записывать что-то
megasample = data.frame()

#поехали
for (i in 1:length(trainingsets)) {
        #сформировали полное имя файла
	afile = paste(inputdir,trainingsets[i],sep="")
        #прочитали содержимое	
        adata = read.table(afile,sep=" ",strip.white=T)
        #объединили построчно 
	megasample = rbind(megasample,adata)
        #и так далее, пока есть файлы
}

Re: батч-обработка текстовых файлов в R

Добавлено: 12 авг 2009, 22:54
Анна
спасибо огромное!! а можно вопрос по скрипту?

Код: Выделить всё

megasample = rbind(megasample,adata) 
что вот этой строкой достигается?

Re: батч-обработка текстовых файлов в R

Добавлено: 12 авг 2009, 22:58
Максим Дубинин
эта строка - это результат считывания вставляется в общий фрейм данных, т.е. например из 100 файлов делается один общий фрейм, я добавил для примера, разумеется делаться в цикле может что угодно

Re: батч-обработка текстовых файлов в R

Добавлено: 12 авг 2009, 23:03
Анна
спасибо! ну и последний вопрос :) как экспортировать в текстовые файлы (отдельные) результаты обработки каждого файла?
еще раз огромное спасибо

Re: батч-обработка текстовых файлов в R

Добавлено: 12 авг 2009, 23:06
Максим Дубинин

Код: Выделить всё

inputdir = "D:\\input\\"

#ищем все файлы c подстрокой "csv" в папке Input
trainingsets = list.files(path=inputdir, pattern="csv")

#создаём новый фрейм данных, куда будем записывать что-то
megasample = data.frame()

#поехали
for (i in 1:length(trainingsets)) {
        #сформировали полное имя файла
	afile = paste(inputdir,trainingsets[i],sep="")
        #прочитали содержимое файла
        adata = read.table(afile,sep=" ",strip.white=T)
        #здесь обработка начало
        #...
        #...
        #здесь обработка конец
        #сохраняем в ouput1.csv, цифра меняется
        write.table(res,paste(inputdir,"output",i,".csv",sep=""),sep=",")
        #и так далее, пока есть файлы
}