Simpe low-level interface for reading and writing vectors from ff files.

read.ff(x, i, n)
write.ff(x, i, value, add = FALSE)
readwrite.ff(x, i, value, add = FALSE)

Arguments

x

an ff object

i

a start position in the ff file

n

number of elements to read

value

vector of elements to write

add

TRUE if the values should rather increment than overwrite at the target positions

Details

readwrite.ff combines the effects of read.ff and write.ff in a single operation: it retrieves the old values starting from position i before changing them. getset.ff will maintain na.count.

Value

read.ff returns a vector of values, write.ff returns the 'changed' ff object (like all assignment functions do) and readwrite.ff returns the values at the target position. More precisely readwrite.ff(x, i, value, add=FALSE) returns the old values at the position i while readwrite.ff(x, i, value, add=TRUE) returns the incremented values of x.

Author

Jens Oehlschlägel

Note

read.ff, write.ff and readwrite.ff are low level functions that do not support ramclass and ramattribs and thus will not give the expected result with factor and POSIXct

See also

getset.ff for low-level scalar access and [.ff for high-level access

Examples

  x <- ff(0, length=12)
  read.ff(x, 3, 6)
#> [1] 0 0 0 0 0 0
  write.ff(x, 3, rep(1, 6))
#> ff (open) double length=12 (12)
#>  [1]  [2]  [3]  [4]  [5]  [6]       [7]  [8]  [9] [10] [11] [12] 
#>    0    0    1    1    1    1    :    1    1    0    0    0    0 
  x
#> ff (open) double length=12 (12)
#>  [1]  [2]  [3]  [4]  [5]  [6]       [7]  [8]  [9] [10] [11] [12] 
#>    0    0    1    1    1    1    :    1    1    0    0    0    0 
  write.ff(x, 3, rep(1, 6), add=TRUE)
#> ff (open) double length=12 (12)
#>  [1]  [2]  [3]  [4]  [5]  [6]       [7]  [8]  [9] [10] [11] [12] 
#>    0    0    2    2    2    2    :    2    2    0    0    0    0 
  x
#> ff (open) double length=12 (12)
#>  [1]  [2]  [3]  [4]  [5]  [6]       [7]  [8]  [9] [10] [11] [12] 
#>    0    0    2    2    2    2    :    2    2    0    0    0    0 
  readwrite.ff(x, 3, rep(1, 6), add=TRUE)
#> [1] 3 3 3 3 3 3
  readwrite.ff(x, 3, rep(1, 6))
#> [1] 3 3 3 3 3 3
  x
#> ff (open) double length=12 (12)
#>  [1]  [2]  [3]  [4]  [5]  [6]       [7]  [8]  [9] [10] [11] [12] 
#>    0    0    1    1    1    1    :    1    1    0    0    0    0 
  rm(x); gc()
#>           used (Mb) gc trigger  (Mb) max used  (Mb)
#> Ncells 1171951 62.6    1994352 106.6  1994352 106.6
#> Vcells 2187455 16.7    8790397  67.1  8790397  67.1