我有一个大的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.ffdf
和load.ffdf
函数,但这并没有给我任何简单的修复。
Backgroud:我最初将数据框custTrans
保存到默认的./ffdb
目录。我实际上想在目录./custTrans
中使用它们,所以我使用move.ffdf
来移动文件。已移动列文件,但未移动.RData
和.Rprofile
文件。我尝试从./ffdb
目录加载数据,并将.RData
和.Rprofile
文件复制到./custTrans
目录并在那里运行load.ffdf
。我还尝试将数据文件移回./ffdb
目录。错误消息是相同的。
答案 0 :(得分:0)
我找到了问题的部分解决方案。我现在可以使用ff
读取原始readBin
文件。由于我的ffdf
已加载到搜索路径中,因此我可以使用它来查看列中的特定数据类型以及列长度。打印对象可以获得信息。
custTrans
然后readBin
根据上面打印的信息设置what
和n
,将会读取文件。然后可以使用标准方法将它们组合回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))
这显然假设所有这些都适合记忆,它确实如此。 (这不是文件大小的问题,但生成它们需要很长时间。)