У меня есть каталог идентично структурированных CSV-файлов. Я пытаюсь загрузить все из них в один файл data.frame. В настоящее время я использую lapply()
с read.csv()
, чтобы получить список data.frames, и я ищу элегантный способ преобразования этого списка в data.frame, который избегает явного цикла.упрощение произвольно длинного списка кадров данных в единый фрейм данных
В результате моего lapply(list.of.file.names,read.csv)
может быть аппроксимирована этой структуры:
list.of.dfs <- list(data.frame(A=sample(seq(from = 1, to = 10), size = 5),
B=sample(seq(from = 1, to = 10), size = 5)),
data.frame(A=sample(seq(from = 1, to = 10), size = 5),
B=sample(seq(from = 1, to = 10), size = 5)),
data.frame(A=sample(seq(from = 1, to = 10), size = 5),
B=sample(seq(from = 1, to = 10), size = 5))
)
Что элегантную версию следующей строки, которая работает для произвольных списков длины:
one.data.frame <- rbind(list.of.dfs[[1]],list.of.dfs[[2]],list.of.dfs[[3]])
Я могу это сделать с циклом for, но существует ли векторное решение?
'do.call (rbind, list.of.dfs)' – user1609452
Да, это удивительно легко, если вы знаете, что делает 'do.call'. – Marius
Yup, это дубликат. Почему-то я не нашел более раннего. Застенчиво голосуя, чтобы закрыть мой собственный вопрос. – MattBagg