В дополнение к ответу @ James, использование lapply
считывает файлы только в список, а не в общий data.frame
. Из твоего вопроса не очевидно, хочешь ли ты этого. Но я все равно добавлю это для полноты картины.
Чтобы иметь возможность определить, какому файлу изначально принадлежала строка в общем data.frame
, я часто добавляю столбец с именем файла. В псевдокоде это будет выглядеть примерно так:
files = list.files()
data_list = lapply(files, function(f) {
dat = read.csv(fname, skip = 6)
dat$fname = fname
return(dat)
})
data_df = do.call("rbind", data_list)
В качестве альтернативы, вы можете использовать удивительную библиотеку plyr
, которая делает то же самое в:
library(plyr)
files = list.files()
data_df = ldply(files, read.csv, skip = 6)
Я не тестировал этот псевдокод, поэтому, возможно, еще есть некоторые недостатки. Но вы поняли основную идею. Например, одной из проблем может быть то, что ldply
не добавляет автоматически имя файла в виде столбца. Затем вам нужно использовать вызов функции, как я использовал lapply
. В этом случае ldply
спасет вас от шага do.call
. Обратите внимание, что plyr
поддерживает индикатор выполнения (хорошо для длинных процессов) и параллельной обработки.
Примечание:
- Мне нравятся более описательные имена, чем
j
и d
. Это облегчает чтение кода.