Extract.spray {spray} | R Documentation |
Extract or Replace Parts of a spray
Description
Extract or replace subsets of sprays.
Usage
## S3 method for class 'spray'
S[..., drop=FALSE]
## S3 replacement method for class 'spray'
S[index, ...] <- value
Arguments
S |
A spray object |
index |
elements to extract or replace |
value |
replacement value |
... |
Further arguments |
drop |
Boolean, with default |
Details
These methods should work as expected, although the off-by-one issue might be a gotcha. disordR discipline is enforced where appropriate.
In S[index,...]
, argument drop
is FALSE
by
default, in which case a spray
object is returned. If
drop
is TRUE
a numeric vector is returned, with elements
corresponding to the rows of index
. Compare coeffs(S)
,
which returns a disord
object; in S[index,drop=TRUE]
,
the rows of index
specify a unique order for the return value.
If a <- spray(diag(3))
, for example, then idiom such as
a[c(1,2,3)]
cannot work, because one would like a[1,2,3]
and a[1:3,2,3]
to work.
If p <- 1:3
, then one might expect idiom such as
S[1,,p,1:3]
to work but this is problematic and a discussion is
given in inst/missing_accessor.txt
.
Functions spray_extract_disord()
and
spray_replace_disord()
are low-level helper functions which
implement idiom such as a[coeffs(a) < 3]
anda[coeffs(a) <
3] <- 99
.
Examples
(a <- spray(diag(5)))
a[rbind(rep(1,5))] <- 5
a
a[3,4,5,3,1] # the NULL polynomial
a[0,1,0,0,0]
a[0,1,0,0,0,drop=TRUE]
a[2,3:5,4,3,3] <- 9
a
options(polyform = TRUE) # print as a multivariate polynomial
a
options(polyform = FALSE) # print in sparse array form
a
(S1 <- spray(diag(5),1:5))
(S2 <- spray(1-diag(5),11:15))
(S3 <- spray(rbind(c(1,0,0,0,0),c(1,2,1,1,1))))
S1[] <- 3
S1[] <- S2
S1[S3] <- 99
S1
S <- rspray()
S[coeffs(S) > 4]
S[coeffs(S) < 6] <- 99
S