2

当我在 R 中 ffsave 使用 ffload 时,*.ff 文件有问题。
当我使用时,ffsave(fileName)我看到fileName.ffDataand fileName.RData

我的问题是:

  1. *.ff在我使用时ffsave还是在使用后创建的ffload(fileName)
  2. 我可以*.ff在看到文件后删除它们吗?
  3. 我可以控制*.ff文件的存储位置吗?

谁能教我正确的使用ffsaveffload删除方法,*.ff因为它们是大文件?谢谢。

4

1 回答 1

2

对问题 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 文件的链接)

于 2014-06-12T09:00:11.363 回答