0

私は周りを見回してきましたが、これで何が起こっているのかを完全に把握することはできません. 私はEclipseでRを使用しています。インポートしようとしているファイルは、約 1,500 万行、6 列の 700 MB です。読み込みに問題があったため、ffパッケージの使用を開始しました。

library(ff)
FDF = read.csv.ffdf(file='C:\\Users\\William\\Desktop\\R Data\\GBPUSD.1986.2014.txt', header = FALSE, colClasses=c('factor','factor','numeric','numeric','numeric','numeric'), sep=',')
names(FDF)= c('Date','Time','Open','High','Low','Close')
#names the columns in the ffdf file
dim(FDF)
# produces dimensions of the file

次に、インポートされたファイルに対して後で結合される POSIXct シーケンスを作成したいと考えています。私は試しました。

tm1 = seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = data.frame (DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))

しかし、Rはクラッシュし続けました。次に、これが RStudio であることをテストしたところ、ベクトルに対する where 制約があることがわかりました。しかし、それは正しいものを生成しました

dim(tm1)
names(tm1)

そこで、これはメモリ割り当てに関係があると考えて、Eclipse に戻りました。私は次のことを試みました;

library(ff)
tm1 = as.ffdf(seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = as.ffdf(DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))
names(tm1) = c('DateTime')
dim(tm1)
names(tm1)

これにより、次のエラーが発生します

クラス「c('POSIXct', 'POSIXt')」のオブジェクトに適用される「as.ffdf」に適用可能なメソッドはありません

私はこれを回避できないようです。私はそれから試しました...

library(ff)
tm1 = as.ff(seq(as.POSIXct("1986/12/1 00:00"), as.POSIXct("2014/09/04 23:59"),"mins")) 
tm1 = as.ff(DateTime=strftime(tm1,format='%Y.%m.%d %H:%M'))

出力日付を生成しますが、正しい形式ではありません。これに加えて、いつ...

dim(tm1)
names(tm1)

実行された場所では、両方とも null が返されました。

質問

  1. 上記で必要な形式で POSIXct seq を生成するにはどうすればよいですか?
4

1 に答える 1

0

最後にそこにたどり着きます。

問題は、完全なベクターの作成中に使用可能な RAM だったと思います。この場合、ベクターを 3 つに分割し、それらを ffdf 形式に変換して RAM を解放し、rbindそれらをバインドするために使用しました。

作成したベクトルのフォーマットに関する問題は、RAM へのアクセスが原因だったと思います。このRを試すたびにクラッシュしました。

以下の回避策を行っても、マシンが遅くなります (4GB)。追加の RAM を注文しました。今後の運用がスムーズになることを願っています。

以下は作業コードです。

library(ff)
library(ffbase)

tm1 = seq(from = as.POSIXct('1986-12-01 00:00'), to = as.POSIXct('2000-12-01 23:59'), by = 'min')
tm1 = data.frame(DateTime=strftime(tm1, format='%Y.%m.%d %H:%M'))
# create data frame within memory contrainst
tm1 = as.ffdf(tm1)
# converts to ffdf format 
memory.size()

tm2 = seq(from = as.POSIXct('2000-12-02 00:00'), to = as.POSIXct('2010-12-01 23:59'), by = 'min')
tm2 = data.frame(DateTime=strftime(tm2, format='%Y.%m.%d %H:%M'))
# create data frame within memory contrainst
tm2 = as.ffdf(tm2)
memory.size()

tm3 = seq(from = as.POSIXct('2010-12-2 00:00'), to = as.POSIXct('2014-09-04 23:59'), by = 'min')
tm3 = data.frame(DateTime=strftime(tm3, format='%Y.%m.%d %H:%M'))
memory.size()
tm3 = as.ffdf(tm3)
# converts to ffdf format 
memory.size()

tm4 = rbind(tm1, tm2, tm3)
# binds ffdf objects into one
dim(tm4)
# checks the row numbers 
于 2014-11-30T15:56:41.850 に答える