首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自ffbase的ffdfappend

来自ffbase的ffdfappend
EN

Stack Overflow用户
提问于 2012-12-20 20:58:42
回答 1查看 567关注 0票数 1

R个朋友。

由于我的数据很大,所以我使用ff和ffbase包。我的问题是关于ffdfappend()。我有不同的ffsf文件另存为.csv。我需要做的是加载所有文件并应用ffdfd函数,以便只创建一个大的ffdf文件。我以循环的形式执行此操作:

代码语言:javascript
复制
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告诉我:

代码语言:javascript
复制
Error en sort.list(y) : 'x' must be atomic for 'sort.list'  
Have you called 'sort' on a list?***

我不明白是什么在告诉我,所以我无法解决这个问题。

代码语言:javascript
复制
str(files)
chr [1:6] "102c1b481014.csv" "102c2211788.csv" "102c32963052.csv" "102c32f1798.csv" "102c3a2517f1.csv" "102c4e7513f0.csv"

如果有人能帮助我理解或解决这个问题,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2012-12-21 21:46:53

ffdfappend基本上是用于将data.frame附加到ffdf。我不知道这是否是一种选择,但是在附加到ffdf之前将每个data.frame加载到内存中是可行的,如下所示。

代码语言:javascript
复制
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参数。如下所示。但您的数据确实需要具有相同的结构。

代码语言:javascript
复制
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)   
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13972746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档