繁体   English   中英

使用load.ffdf将ff / ffbase文件加载到R会话中

[英]Loading ff / ffbase files into R session with load.ffdf

我有一个很大的ffdf数据帧保存到磁盘,需要将其加载到新的R会话中。 当我在文件所在的目录中运行load.ffdf时,出现以下错误消息:

load.ffdf("./ffdb")
#    Error in `filename<-.ff`(`*tmp*`, value = "./custTrans$custKey.ff") : 
#    ff file rename from './custTrans$custKey.ff' to
#    'mylocation'/ffdb/custTrans$custKey.ff' failed

我真的很想阅读这些文件。 有没有办法鼓励他们阅读? 有什么方法可以直接读取单个ff列文件? 它们采用什么格式? 也许我可以将它们手动放置在基础ff包使用的临时位置?

我已经看过save.ffdfload.ffdf函数,但是并没有给我任何简单的解决方法。

背景:我最初将数据帧custTrans保存到默认的./ffdb目录。 我实际上希望它们位于目录./custTrans ,因此我使用move.ffdf来移动文件。 列文件已移动,但.RData.Rprofile文件未移动。 我尝试从./ffdb目录中加载数据,还将.RData.Rprofile文件复制到./custTrans目录中,然后在其中运行load.ffdf 我也尝试将数据文件移回./ffdb目录。 错误消息是相同的。

我找到了解决该问题的部分方法。 我现在可以使用readBin读取原始ff文件。 由于ffdf 加载到搜索路径中,因此可以使用它来查看列中的特定数据类型以及列长。 打印对象会给我信息。

custTrans

然后, readBin (根据上面打印的信息设置了whatn将读取文件。 然后可以使用标准方法将它们合并回ffdf

custKey <- readBin("./custTrans/MINS$custKey.ff", what = "int", n = 268820)
Transactiondate.max <- readBin("./custTrans/MINS$Transactiondate.max.ff",
                               what = "double", n = 268820)
Transactiondate.min <- readBin("./custTrans/MINS$Transactiondate.min.ff",
                               what = "double", n = 268820)
custTrans <- as.ffdf(as.ff(custKey),
                     as.ff(Transactiondate.max),
                     as.ff(Transactiondate.min))

显然,这是假定所有这些都适合内存。 (不是文件的大小成为问题,但是生成文件花费了很长时间。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM