1

Rフレンズ。

データのサイズが大きいため、ff および ffbase パッケージを使用しています。私の質問は ffdfappend() についてです。.csv として保存されたさまざまな ffsf ファイルがあります。すべてのファイルをロードし、ffdfd 関数を適用して、大きな ffdf ファイルを 1 つだけ作成する必要があります。私はこれをループとして行います:

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)
}

フォルダ内のファイルを簡単に読み取ることができます。問題は、それらを 1 つの 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"

誰かがこの問題を理解または解決するのを手伝ってくれるなら、私はそれを感謝します

4

1 に答える 1

3

ffdfappend は、基本的に data.frame を ffdf に追加するためのものです。これがオプションかどうかはわかりませんが、以下のように、ffdf に追加する前に各 data.frame を RAM にロードすると機能します。

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)
}

もう 1 つのオプションは、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)   
}
于 2012-12-21T13:46:53.323 に答える