[英]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.ffdf
和load.ffdf
函数,但是并没有给我任何简单的解决方法。
背景:我最初将数据帧custTrans
保存到默认的./ffdb
目录。 我实际上希望它们位于目录./custTrans
,因此我使用move.ffdf
来移动文件。 列文件已移动,但.RData
和.Rprofile
文件未移动。 我尝试从./ffdb
目录中加载数据,还将.RData
和.Rprofile
文件复制到./custTrans
目录中,然后在其中运行load.ffdf
。 我也尝试将数据文件移回./ffdb
目录。 错误消息是相同的。
我找到了解决该问题的部分方法。 我现在可以使用readBin
读取原始ff
文件。 由于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))
显然,这是假定所有这些都适合内存。 (不是文件的大小成为问题,但是生成文件花费了很长时间。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.