0

ビッグデータを扱うソリューションを探しています。そこで「ffパッケージ」を試してみました。私の通常のスクリプトでは、66896 x 362 の data.frame での選択に次のコードを使用しました。

setwd(wd)
bf <- read.table("G_BANKFULL_km3month.csv",header=T, sep=",",dec=".")


## read river discharge global, monthly vlaues 1971-2000##
memory.limit(size=16000)   # increase RAM
dis <- read.table('RIVER_AVAIL_7100_WG22.txt', header=T, sep="\t", dec=".")
##


## return only grid cells where bankfull is exceeded at least once during the time 
## period
test <- cbind(dis,bf$VALUE)
test2 <- test[(test[,-c(1:3)] > test[,length(test)]), ]

十分なRAMを使用すれば機能します。しかし、そのような操作に十分なRAMが常にあるとは限らないため、「ffパッケージ」を試しました。

library(ff)
## read Bankfull flow##
setwd(wd)
bf <- read.csv.ffdf(file="G_BANKFULL_km3month.csv",header=TRUE)
## read river discharge global, monthly vlaues 1971-2000##
memory.limit(size=16000)   # increase working memory
dis <- read.table.ffdf(file='RIVER_AVAIL_7100_WG22.txt', header=T, sep="\t", dec=".")
##read bankfull values as ff object##
bfvalues <- ff(bf[,2])
##combination of bf and dis ( see test <- cbind(dis,bf$VALUE))
dis_bf <- do.call('ffdf', c(physical(dis), list(bfvalues=bfvalues)))

dis_bf_test <-  dis_bf[(dis_bf[,-c(1:3)] > dis_bf[,length(dis_bf)]),]

ffdf と通常の data.frame は同じ構造などを持っていますが、この最後の選択をしようとすると機能せず、次のエラーが発生します。

Error in as.hi.matrix(i, maxindex = nvw$n, vw = nvw$vw, pack = FALSE,  : 
argument "dim" is missing, with no default

おそらく、あなたの誰かが ff パッケージで作業したことがあり、それが機能しない理由を知っています. また、ビッグデータを扱うための他のパッケージやソリューションのアイデアや情報についても嬉しく思います。乾杯

4

1 に答える 1

0

コードを置き換えてみませんか

dis_bf_test <-  dis_bf[(dis_bf[,-c(1:3)] > dis_bf[,length(dis_bf)]),]

require(ffbase)
open(dis_bf_test)
dis_bf_test <- subset(dis_bf_test, yourcolumnname > youothercolumnname)

ここで、yourcolumnname は指定した列を表し、dis_bf[,-c(1:3)]yourothercolumnname は指定した列を表しますdis_bf[,length(dis_bf)]

于 2013-08-12T10:47:48.000 に答える