gpt4 book ai didi

r - 将 ff 对象转换为 data.frame

转载 作者:行者123 更新时间:2023-12-03 04:09:49 25 4
gpt4 key购买 nike

我正在使用大矩阵和 ff 包。我正在加载一个 ff 对象,我想用它来计算 crps(分数)。

例如,我有一个ff_matrix(称为Mat,有25行和7303列),它是降水预报(7303代表天数(大约20年),25是一天的25次降水模拟)。我还有一个 ff_array,其中包含这 20 年的观察结果(称为 Obs,包含 7303 个值)。

使用 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

有人有想法吗?

最佳答案

我们首先将 ff_array 转换为数组并将其转换为 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))

最后两个解决方案似乎比第一个慢得多。这可能与大量列有关,这会减慢 as.ffdf 的速度,后者必须创建 7303 个文件。

似乎没有as.data.frame.ff_array

关于r - 将 ff 对象转换为 data.frame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21253770/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com