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=rep(1, length(dim)), drop.negative=TRUE) as.Oarray(x, offset=rep(1, length(dim)), drop.negative=TRUE) ## S3 method for class 'Oarray': as.array(x) ## S3 method for class 'Oarray': print(x) x[i] x[i, j, ...] x[i, j, ..., drop=TRUE]
data, dim, dimnames, drop |
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 |
i, j, ... |
Indexing arguments to 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 as.array
in package:base
is redefined to
operate on objects of class Oarray
, using the S3 method.
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(identical(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