Skip to contents

The mutatomic class is a mutable version of atomic classes.
It works exactly the same in all aspects as regular atomic classes.
There is only one real difference:
Pass-by-reference functions in 'squarebrackets' only accept atomic objects when they are of class mutatomic, for greater safety.
In all other aspects, mutatomic objects are the same as R's regular atomic objects, including the behaviour of the [<- operator .

Exposed functions (beside the S3 methods):

  • mutatomic(): create a mutatomic object from given data.

  • couldb.mutatomic(): checks if an object could become mutatomic.
    An objects can become mutatomic if it is one of the following types:
    logical, integer, double, character, complex, raw.
    Factors can never be mutatomic.

Usage

mutatomic(data, names = NULL, dim = NULL, dimnames = NULL)

as.mutatomic(x, ...)

is.mutatomic(x)

couldb.mutatomic(x)

Arguments

data

atomic vector giving data to fill the mutatomic object.

names, dim, dimnames

see setNames and array.

x

an atomic object.

...

method dependent arguments.

Value

For mutatomic(), as.mutatomic():
Returns a mutatomic object.

For is.mutatomic():
Returns TRUE if the object is mutatomic, and returns FALSE otherwise.

For couldb.mutatomic():
Returns TRUE if the object is one of the following types:
logical, integer, double, character, complex, raw.
Returns FALSE otherwise.

Note

Always use the exported functions given by 'squarebrackets' to create a mutatomic object, as they make necessary safety checks.

Examples


x <- mutatomic(
  1:20, dim = c(5, 4), dimnames = list(letters[1:5], letters[1:4])
)
x
#>   a  b  c  d
#> a 1  6 11 16
#> b 2  7 12 17
#> c 3  8 13 18
#> d 4  9 14 19
#> e 5 10 15 20
#> mutatomic 
#> typeof:  integer 

x <- matrix(1:10, ncol = 2)
x <- as.mutatomic(x)
is.mutatomic(x)
#> [1] TRUE
print(x)
#>      [,1] [,2]
#> [1,]    1    6
#> [2,]    2    7
#> [3,]    3    8
#> [4,]    4    9
#> [5,]    5   10
#> mutatomic 
#> typeof:  integer 
x[, 1]
#> [1] 1 2 3 4 5
#> mutatomic 
#> typeof:  integer 
x[] <- as.double(x)
#> coercing type from `integer` to `double`
print(x)
#>      [,1] [,2]
#> [1,]    1    6
#> [2,]    2    7
#> [3,]    3    8
#> [4,]    4    9
#> [5,]    5   10
#> mutatomic 
#> typeof:  double 
is.mutatomic(x)
#> [1] TRUE