Предположим, у меня есть список файлов, которые я хочу объединить в одну таблицу data.table.Мой основной способ решения этой проблемы - сделать что-то вроде этого:
files <- dir(...) # The list of files to be combined
read.data <- function(loadfile) {
data.dt <- data.table(read.csv(loadfile));
}
data.dt <- data.table(file = files)[, read.data(file), by = file]
Проблема с этим подходом заключается в том, что вы получаете пустые data.tables (возникающие из пустых файлов, которые просто содержат строку заголовка).
Error in `[.data.table`(data.table(file = files), , read.data(file), :
columns of j don't evaluate to consistent types for each group
Есть ли способ получить data.table для правильного объединения пустых или пустых значений?Таким образом, вы могли бы просто сделать что-то вроде
if(dim(data.dt)[1] == 0) {
data.dt <- NULL
}
И это должно исправить большинство проблем, с которыми я сталкиваюсь.
РЕДАКТИРОВАТЬ: Я должен отметить, что у меня естьуже реализовал эту логику, используя подпрограммы plyr.ldply () работал безупречно, но, к сожалению, очень медленно и занимал много памяти, когда вы пытаетесь передать больше, чем небольшое количество файлов.