对问题 3 的回答:我可以控制存储 *.ff 文件的位置吗?
ff 文件默认保存在getOption("fftempdir")
. 您可以通过更改该选项来更改此设置
require(ff)
getOption("fftempdir")
[1] "/tmp/RtmpkneHQo"
options(fftempdir = "/home/janw")
x <- ff(1:10)
filename(x)
[1] "/home/janw/ff12153b63d8c1.ff"
list.files("/home/janw", pattern = ".ff")
[1] "ff12153b63d8c1.ff"
对问题 2 的回答:我可以在看到 *.ff 文件后删除它们吗?当然可以,但您可能会丢失在 R 进程中使用的数据(每个 ff 对象都由 .ff 文件支持 - 因此,如果您删除该文件,您将不再拥有数据)。但是,如果您ffsaved
在某处拥有数据,则可以安全地删除 .ff 文件,因为您可以使用 .ff 再次加载数据ffload
。见问题 1 的答案。
对问题 1 的回答:*.ff 是在我使用 ffsave 时还是在我使用 ffload(fileName) 之后创建的?u 在您调用 ffsave 之前,.ff 文件已经在您的磁盘上。ffsave 所做的只是将您指示保存在目录中的指定对象的 .ff 文件压缩。完成此操作后,您可以安全地删除 .ff 文件,因为您可以使用 ffload 重新加载它们。
ffsave(x, file = "/home/janw/mydata")
[1] " adding: home/janw/ff12153b63d8c1.ff (deflated 35%)"
list.files("/home/janw", pattern = ".ff$")
[1] "ff12153b63d8c1.ff"
list.files("/home/janw", pattern = "mydata")
[1] "mydata.ffData" "mydata.RData"
## Now what happens if we remove the .ff file of the x variable - it is no longer accessible
file.remove("/home/janw/ff12153b63d8c1.ff")
x[1:2]
opening ff /home/janw/ff12153b63d8c1.ff
Error: file.access(filename, 0) == 0 is not TRUE
## And we are ffloading the data back
ffload("/home/janw/mydata", overwrite=TRUE)
[1] "home/janw/ff12153b63d8c1.ff"
## Waw, it is back!
list.files("/home/janw", pattern = ".ff$")
[1] "ff12153b63d8c1.ff"
## And we can access it again.
x[1:2]
opening ff /home/janw/ff12153b63d8c1.ff
[1] 1 2
ff 保存时,您将拥有一个扩展名为 .ffData 的文件和一个扩展名为 .RData 的文件。.ffData 文件包含原始 .ff 文件,.RData 文件包含虚拟部分(因素级别,例如和原始 .ff 文件的链接)