swap {ff} | R Documentation |
Reading and writing in one operation (high-level)
Description
The generic swap
combines x[i]
and x[i] <- value
in a single operation.
Usage
swap(x, value, ...)
## S3 method for class 'ff'
swap(x, value, i, add = FALSE, pack = FALSE, ...)
## S3 method for class 'ff_array'
swap(x, value, ..., bydim = NULL, drop = getOption("ffdrop"), add = FALSE, pack = FALSE)
## Default S3 method:
swap(x, value, ..., add = FALSE)
Arguments
x |
a ff or ram object |
value |
the new values to write, possibly recycled, see |
i |
index information, see |
... |
missing OR up to length(dim(x)) index expressions OR (ff only) |
drop |
logical scalar indicating whether array dimensions shall be dropped |
bydim |
how to interpret vector to array data, see |
add |
TRUE if the values should rather increment than overwrite at the target positions, see |
pack |
FALSE to prevent rle-packing in hybrid index preprocessing, see |
Details
y <- swap(x, value, i, add=FALSE, ...) is a shorter and more efficient version of y <- x[i, add=FALSE, ...] x[i, add=FALSE, ...] <- value and y <- swap(x, value, i, add=TRUE, ...) is a shorter and more efficient version of y <- x[i, add=TRUE, ...] y <- y + value x[i, add=FALSE, ...] <- y
Value
Values at the target positions.
More precisely swap(x, value, i, add=FALSE)
returns the old values at the position i
while swap(x, value, i, add=TRUE)
returns the incremented values of x
.
Note
Note that swap.default
changes the object in its parent frame and thus violates R's usual functional programming logic.
When using add=TRUE
, duplicated index positions should be avoided, because ff and ram objects behave differently:
swap.ff(x, 1, c(3,3), add=TRUE) # will increment x at position 3 TWICE by 1, while swap.default(x, 1, c(3,3), add=TRUE) # will increment x at position 3 just ONCE by 1
Author(s)
Jens Oehlschlägel
See Also
[.ff
, add
, readwrite.ff
, getset.ff
, LimWarn
Examples
x <- ff("a", levels=letters, length=52)
y <- swap(x, "b", sample(length(x), 26))
x
y
rm(x,y); gc()