从包ff使用ffsave和ffload

时间:2014-06-11 22:07:15

标签: r bioinformatics bioconductor ff

当我在f中使用ffave时,我的* .ff文件有问题。
当我使用ffsave(fileName)时,我会看到fileName.ffDatafileName.RData

我的问题是:

  1. 当我使用*.ff或使用ffsave后,ffload(fileName)是否在某处创建了?
  2. 我看到它们后可以删除*.ff个文件吗?
  3. 我可以控制存储*.ff个文件的位置吗?
  4. 任何人都可以教我使用ffsaveffload删除*.ff的正确方法,因为它们是大文件吗?感谢。

1 个答案:

答案 0 :(得分: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文件,因为您可以使用ffload再次加载数据。请参阅问题1的答案。

对问题1的回答:当我使用ffsave或使用ffload(fileName)后,* .ff是否在某处创建? ü 在调用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

当ffsaving时,你将有一个扩展名为.ffData的文件和一个带有.RData的文件。 .ffData文件包含原始.ff文件,.RData文件包含虚拟部分(因素级别,例如原始.ff文件的链接)