1

我有一个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.ffdfandload.ffdf函数,但这并没有给我任何简单的修复。

背景:我最初将数据框保存custTrans到默认./ffdb目录。我实际上希望它们在目录中./custTrans,所以我曾经move.ffdf移动文件。列文件被移动,但.RData.Rprofile文件没有被移动。我试图从./ffdb目录加载数据,.RData并将.Rprofile文件复制到./custTrans目录并在load.ffdf那里运行。我还尝试将数据文件移回./ffdb目录。错误信息是一样的。

4

1 回答 1

0

我找到了问题的部分解决方案。我现在可以ff使用readBin. 由于我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))

这显然假设所有这些都适合内存,它确实如此。(问题不是文件的大小,而是生成它们需要很长时间。)

于 2013-10-02T08:05:21.557 回答