R个朋友。
由于我的数据很大,所以我使用ff和ffbase包。我的问题是关于ffdfappend()。我有不同的ffsf文件另存为.csv。我需要做的是加载所有文件并应用ffdfd函数,以便只创建一个大的ffdf文件。我以循环的形式执行此操作:
files<-list.files()
for (i in 1:length(files)){
fdata = read.csv.ffdf(file=files[i], first.rows=400, colClasses=NA)
colnames(fdata)<-c('fecha','juliano','UTM_X','UTM_Y','temp','pp','f_ocur', 'altitud')
if (i == 1){data=fdata} else {data<-ffdfappend(data, fdata, adjustvmode=F)}
delete(fdata); rm(fdata)
}我可以很容易地读取文件夹中的文件。问题是当我想在一个ffdf对象中“追加”它们的时候。R告诉我:
Error en sort.list(y) : 'x' must be atomic for 'sort.list'
Have you called 'sort' on a list?***我不明白是什么在告诉我,所以我无法解决这个问题。
str(files)
chr [1:6] "102c1b481014.csv" "102c2211788.csv" "102c32963052.csv" "102c32f1798.csv" "102c3a2517f1.csv" "102c4e7513f0.csv"如果有人能帮助我理解或解决这个问题,我将不胜感激。
发布于 2012-12-21 21:46:53
ffdfappend基本上是用于将data.frame附加到ffdf。我不知道这是否是一种选择,但是在附加到ffdf之前将每个data.frame加载到内存中是可行的,如下所示。
files<-list.files()
for (i in 1:length(files)){
fdata = read.csv.ffdf(file=files[i], first.rows=400, colClasses=NA)
colnames(fdata)<-c('fecha','juliano','UTM_X','UTM_Y','temp','pp','f_ocur', 'altitud')
if (i == 1){data=fdata} else {data<-ffdfappend(data, fdata[,], adjustvmode=TRUE)}
delete(fdata); rm(fdata)
}另一种选择是使用read.csv.ffdf的x参数。如下所示。但您的数据确实需要具有相同的结构。
files<-list.files()
fdata = read.csv.ffdf(file=files[1], first.rows=400, colClasses=NA)
for (i in 2:length(files)){
fdata = read.csv.ffdf(x = fdata, file=files[i], first.rows=400, colClasses=NA)
}https://stackoverflow.com/questions/13972746
复制相似问题