Coercing ram to ff and ff to ram objects while optionally modifying object features.

as.ff(x, ...)
  as.ram(x, ...)
  # Default S3 method
as.ff(x, filename = NULL, overwrite = FALSE, ...)
  # S3 method for class 'ff'
as.ff(x, filename = NULL, overwrite = FALSE, ...)
  # Default S3 method
as.ram(x, ...)
  # S3 method for class 'ff'
as.ram(x, ...)

Arguments

x

any object to be coerced

filename

path and filename

overwrite

TRUE to overwrite the old filename

...

...

Details

If as.ff.ff is called on an 'ff' object or as.ram.default is called on a non-ff object AND no changes are required, the input object 'x' is returned unchanged. Otherwise the workhorse clone.ff is called. If no change of features are requested, the filename attached to the object remains unchanged, otherwise a new filename is requested (or can be set by the user).

Note

If you use ram <- as.ram(ff) for caching, please note that you must close.ff before you can write back as.ff(ram, overwrite=TRUE) (see examples).

Value

A ram or ff object.

Author

Jens Oehlschlägel

Examples

   message("create ff")
#> create ff
   myintff <- ff(1:12)
   message("coerce (=clone) integer ff to double ff")
#> coerce (=clone) integer ff to double ff
   mydoubleff <- as.ff(myintff, vmode="double")
   message("cache (=clone) integer ff to integer ram AND close original ff")
#> cache (=clone) integer ff to integer ram AND close original ff
   myintram <- as.ram(myintff) # filename is retained
   close(myintff)
#> [1] TRUE
   message("modify ram cache and write back (=clone) to ff")
#> modify ram cache and write back (=clone) to ff
   myintram[1] <- -1L
   myintff <- as.ff(myintram, overwrite=TRUE)
   message("coerce (=clone) integer ram to double ram")
#> coerce (=clone) integer ram to double ram
   mydoubleram <- as.ram(myintram, vmode="double")
   message("coerce (inplace) integer ram to double ram")
#> coerce (inplace) integer ram to double ram
   myintram <- as.ram(myintram, vmode="double")
   message("more classic: coerce (inplace) double ram to integer ram")
#> more classic: coerce (inplace) double ram to integer ram
   vmode(myintram) <- "integer"
   rm(myintff, myintram, mydoubleff, mydoubleram); gc()
#>           used (Mb) gc trigger  (Mb) max used  (Mb)
#> Ncells 1021418 54.6    1994352 106.6  1994352 106.6
#> Vcells 1882110 14.4    8388608  64.0  3877600  29.6