fread
из data.table
является более надежным IMO.
Попробуйте
library(data.table)
dat<-lapply(fi,fread)
Может также случиться, что некоторые из ваших файлов не в формате .csv
.Попробуйте добавить:
fi<-fi[grepl(".csv",fi)]
Или, как прокомментировано, опция row.names=NULL
может помочь в dat<-lapply(fi,function(x) read.csv(x, row.names=NULL))
Если данные неструктурированы, попробуйте с помощью fill=T
dat<-lapply(fi,function(x) fread(x, fill=T))
РЕДАКТИРОВАТЬ: Обратите внимание, что это нормально (и рекомендуется) для dat
быть list
в этом случае, потому что dat
состоит из множества data.frames
.Попробуйте соответствующим образом проиндексировать ваш список, используя [[]]
.Если вам действительно не нужны списки, вы можете использовать:
for(i in 1:length(fi)) {
name <- paste0("dat",i)
myvar <- data.frame(fread(fi[i], fill=T))
assign(name,myvar, .GlobalEnv)
}
После этого у вас будет много фреймов данных, называемых dat1, dat2 ...
РЕДАКТИРОВАТЬ: после чата, проблема была связана с построением и агрегацией файлов, а не с чтением и проблема решена