5

大きなマトリックスと ff パッケージを使用しています。私は ff オブジェクトを読み込んでおり、それを使用して crps (スコア) を計算したいと考えています。

たとえば、降水予報であるff_matrix(25行7303列のMatと呼ばれる)があります(7303は日数(約20年)を表し、25は1日の25回の降水シミュレーションです)。また、この 20 年間の観測値 (Obs と呼ばれ、値が 7303) を含む ff_array もあります。

パッケージ ensembleBMA を使用して、CRPS を計算したいと思います。ff_matrix と ff_array を「ensembleBMA」オブジェクトに配置する必要があります (実際、これは data.frame です)。

このコードの場合:

ensembleBMA(Mat,Obs)

このエラーがあります:

Error in as.data.frame.default(x[[i]], optional = TRUE, stringsAsFactors = stringsAsFactors) : cannot coerce class 'c("ff_matrix", "ff_array", "ff")' into a data.frame

次のようなさまざまなオプションを試しました。

as.data.frame(Mat)
as.matrix(Mat)
transform.ffdf(as.ffdf(Mat))

私はいつもこれらのエラーがあります:

Error in as.data.frame.default(Mat_Ptot_212_1) : cannot automatically convert class  'c("ff_matrix", "ff_array", "ff")' into a data frame (data.frame)

また

opening ff /tmp/RtmpWrlY4n/clone9d3376b435.ff Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,  : write error

誰かがアイデアを持っていますか?

4

1 に答える 1

3

最初に yourff_arrayを配列に変換し、それを a に変換する1 つの方法data.frame:

Mat <- ff(1, vmode="double", dim=c(25, 7303))
as.data.frame(Mat[,])

または最初にあなたff_arrayをにffdf変換し、それをに変換しますdata.frame

 as.ffdf(Mat)[,]

また

as.data.frame(as.ffdf(Mat))

最後の 2 つのソリューションは、最初のソリューションよりもはるかに遅いようです。as.ffdfこれはおそらく、 7303 個のファイルを作成しなければならない多数の列が遅くなることと関係があります。

はないようですas.data.frame.ff_array

于 2014-01-21T10:31:08.173 に答える