The `big.matrix`

class is designed for matrices with
elements of type `double`

, `integer`

, `short`

, or `char`

.
A `big.matrix`

acts much like a traditional **R** matrix, but helps protect
the user from many inadvertant memory-consuming pitfalls of traditional **R**
matrices and data frames. The objects are allocated to shared memory,
and if file-backing is used they may exceed virtual memory in size. Sadly,
32-bit operating system contraints – largely Windows and some MacOS versions –
will be a limiting factor with file-backed matrices; 64-bit operating systems
are recommended.

Unlike many **R** objects, objects should not be created by calls of the form
`new("big.matrix", ...)`

. The functions `big.matrix()`

and `filebacked.big.matrix()`

are intended for the user.

`address`

:Object of class

`"externalptr"`

points to the memory location of the C++ data structure.

As you would expect:

- [<-
`signature(x = "big.matrix", i = "ANY", j = "ANY")`

: ...- [<-
`signature(x = "big.matrix", i = "ANY", j = "missing")`

: ...- [<-
`signature(x = "big.matrix", i = "missing", j = "ANY")`

: ...- [<-
`signature(x = "big.matrix", i = "missing", j = "missing")`

: ...- [<-
`signature(x = "big.matrix", i = "matrix", j = "missing")`

: ...- [
`signature(x = "big.matrix", i = "ANY", j = "ANY", drop = "missing")`

: ...- [
`signature(x = "big.matrix", i = "ANY", j = "ANY", drop = "logical")`

: ...- [
`signature(x = "big.matrix", i = "ANY", j = "missing", drop = "missing")`

: ...- [
`signature(x = "big.matrix", i = "ANY", j = "missing", drop = "logical")`

: ...- [
`signature(x = "big.matrix", i = "matrix", j = "missing", drop = "logical")`

: ...- [
`signature(x = "big.matrix", i = "missing", j = "ANY", drop = "missing")`

: ...- [
`signature(x = "big.matrix", i = "missing", j = "ANY", drop = "logical")`

: ...- [
`signature(x = "big.matrix", i = "missing", j = "missing", drop = "missing")`

: ...- [
`signature(x = "big.matrix", i = "missing", j = "missing", drop = "logical")`

: ...

The following are probably more interesting:

- describe
`signature(x = "big.matrix")`

: provide necessary and sufficient information for the sharing or re-attaching of the object.- dim
`signature(x = "big.matrix")`

: returns the dimension of the`big.matrix`

.- length
`signature(x = "big.matrix")`

: returns the product of the dimensions of the`big.matrix`

.- dimnames<-
`signature(x = "big.matrix", value = "list")`

: set the row and column names, prohibited by default (see`bigmemory`

to override).- dimnames
`signature(x = "big.matrix")`

: get the row and column names.- head
`signature(x = "big.matrix")`

: get the first 6 (or`n`

) rows.- as.matrix
`signature(x = "big.matrix")`

: coerce a`big.matrix`

to a`matrix`

.- is.big.matrix
`signature(x = "big.matrix")`

: return`TRUE`

if it's a`big.matrix`

.- is.filebacked
`signature(x = "big.matrix")`

: return`TRUE`

if there is a file-backing.- is.separated
`signature(x = "big.matrix")`

: return`TRUE`

if the`big.matrix`

is organized as a separated column vectors.- is.sub.big.matrix
`signature(x = "big.matrix")`

: return`TRUE`

if this is a sub-matrix of a`big.matrix`

.- ncol
`signature(x = "big.matrix")`

: returns the number of columns.- nrow
`signature(x = "big.matrix")`

: returns the number of rows.`signature(x = "big.matrix")`

: a traditional`print()`

is intentionally disabled, and returns`head(x)`

unless`options()$bm.print.warning==FALSE`

; in this case,`print(x[,])`

is the result, which could be very big!- sub.big.matrix
`signature(x = "big.matrix")`

: for contiguous submatrices.- tail
`signature(x = "big.matrix")`

: returns the last 6 (or`n`

) rows.- typeof
`signature(x = "big.matrix")`

: return the type of the atomic elements of the`big.matrix`

.- write.big.matrix
`signature(bigMat = "big.matrix", fileName = "character")`

: produce an ASCII file from the`big.matrix`

.- apply
`signature(x = "big.matrix")`

:`apply()`

where`MARGIN`

may only be 1 or 2, but otherwise conforming to what you would expect from`apply()`

.

1 | ```
showClass("big.matrix")
``` |

Questions? Problems? Suggestions? Tweet to @rdrrHQ or email at ian@mutexlabs.com.

All documentation is copyright its authors; we didn't write any of that.