| 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, ...)
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’ |
... |
Additional arguments to print |
Typical uses are
x[i, j] x[i, j] <- someValueswhere
x is an object of class ‘Oarray’.
The use of drop.negative = FALSE will only work in
[.Oarray where it is provided as the final argument inside
the square brackets.
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 base::as.array is redefined
as generic, to provide an as.array.Oarray method.
Jonathan Rougier, j.c.rougier@bristol.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