首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将ff对象转换为data.frame

将ff对象转换为data.frame
EN

Stack Overflow用户
提问于 2014-01-21 09:18:10
回答 1查看 3.4K关注 0票数 5

我用的是大矩阵和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)。

对于此代码:

代码语言:javascript
运行
复制
ensembleBMA(Mat,Obs)

我有一个错误:

代码语言:javascript
运行
复制
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

我尝试了不同的选择,例如:

代码语言:javascript
运行
复制
as.data.frame(Mat)
as.matrix(Mat)
transform.ffdf(as.ffdf(Mat))

我总是有这样的错误:

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
opening ff /tmp/RtmpWrlY4n/clone9d3376b435.ff Error in ff(initdata = initdata, length = length, levels = levels, ordered = ordered,  : write error

有人有主意吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-21 10:31:08

首先将ff_array转换为数组并将其转换为data.frame的一种方法

代码语言:javascript
运行
复制
Mat <- ff(1, vmode="double", dim=c(25, 7303))
as.data.frame(Mat[,])

或首先将ff_array转换为ffdf并将其转换为data.frame

代码语言:javascript
运行
复制
 as.ffdf(Mat)[,]

代码语言:javascript
运行
复制
as.data.frame(as.ffdf(Mat))

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

似乎没有一个as.data.frame.ff_array

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21253770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档