2016-08-05 4 views
0

У меня есть каталог с несколькими файлами RDS (300+), которые я хотел бы читать и комбинировать, эти файлы RDS имеют один и тот же базовый формат, но имеют различное количество строк & несколько разных столбцов в каждом файле , У меня есть простой код, чтобы прочитать одну RDS файл (Все файлы имеют одинаковые «События-3digitnumber-4digitnumber-6digitnumber.RDS»)Чтение нескольких файлов RDS

mydata <- readRDS("Events-104-2014-752043.RDS") 

Будучи новым для науки данных Я уверен, что этот простой ответ, который я отсутствует, но я должен использовать что-то вроде list.files() и либо lapply, либо some for loop.

+0

'list.files()' –

ответ

0

Первый воспроизводимый пример:

data(iris) 
# make sure that the two data sets (iris, iris2) have different columns 
iris2 = copy(iris) 
iris2$Species2 = iris2$Species 
iris2$Species = NULL 

saveRDS(iris, "Events-104-2014-752043.RDS") 
saveRDS(iris2, "Events-104-2015-782043.RDS") 

Теперь вам нужно

  1. найти все имена файлов
  2. читать данные
  3. объединить данные в одну таблицу (если вы хотите, чтобы)

Я бы использовать data.table::rbindlist потому что она обрабатывает различные столбцы для вас, когда вы устанавливаете fill = TRUE:

require(data.table) 
files = list.files(path = '.', pattern = '^Events-[0-9]{3}-[0-9]{4}-[0-9]{6}\\.RDS$') 
dat_list = lapply(files, function (x) data.table(readRDS(x))) 
dat = rbindlist(dat_list, fill = TRUE) 
+0

Running код выше работал большой! Удалось объединить все мои файлы из этого каталога –

Смежные вопросы