| Oarray {Oarray} | R Documentation |
The traditional R array has extents which are
indexed with integers that start at 1. This is generalized to
arbitrary offsets, where extent i is indexed with integers
that start at offset[i], which must be no less than zero
to accomodate the R convention of dropping components with
negative indices. In order to use negative offsets, the flag
drop.negative can be set FALSE.
Oarray(data=NA, dim=length(data), dimnames=NULL, offset=NA, drop.negative=TRUE) as.Oarray(x, offset=NA, drop.negative=TRUE) as.array.Oarray(x) [.Oarray(x, ...) [<-.Oarray(x, ..., value) print.Oarray(x, ...)
data, dim, dimnames |
As in the function array |
offset |
Vector of first index values for each extent (defaults to 1s) |
drop.negative |
Should negative subscripts indicate exclusion? |
x |
An array, possibly of class Oarray |
value |
Vector to be substituted into x |
Typically and array with or without a Oarray class
attribute. Extracting from an Oarray object unclasses the
result which is then a simple array, but assigning into an
Oarray object leaves the result as an Oarray
object.
The print method provides more informative extent labelling in
the case where dimnames are not provided.
The function as.array from
package:base is redefined to provide an as.array.Oarray
method.
The use of drop=FALSE will only work in
[.Oarray where it is provided as the final argument inside
the square brackets.
The function .handleTheOffset is not for general use.
Jonathan Rougier, J.C.Rougier@durham.ac.uk
fred <- Oarray(1:24, 2:4, list(c("sad", "happy"), NULL, NULL),
offset=rep(7, 3))
tmp <- as.array(fred)
fred1 <- as.Oarray(tmp, offset=rep(7, 3))
stopifnot(is.Oarray(fred1), all.equal(fred, fred1))
print.default(fred) # print method provides numbers for
fred # non-named extents
# examples of extraction
fred[] # unclasses fred
fred["sad", 7, -9]
fred["sad", 7, -9, drop=FALSE]
fred[-8, , 7:8]
i <- 8:9; fred[, , i+1]
how.I.feel <- "happy"; fred[how.I.feel, , -(7:8)]
# examples of assignment
fred["sad", 7, -9] <- NA
fred[, , i] <- 100
fred[how.I.feel, , -(7:8)] <- Inf
# now use negative offsets and suppress usual behaviour
fred <- Oarray(24:1, 2:4, offset=c(-1, -2, 7), drop.negative=FALSE)
fred[] <- 1:24
fred[-(1:0), , 7:8]
fred[-(1:0), , 7:8] <- 100
dimnames(fred) <- list(c("sad", "happy"), NULL, NULL)
fred["sad", -2, 10] <- NA