| Extract.clifford {clifford} | R Documentation |
Extract or Replace Parts of a clifford
Description
Extract or replace subsets of cliffords.
Usage
## S3 method for class 'clifford'
C[index, ...]
## S3 replacement method for class 'clifford'
C[index, ...] <- value
coeffs(x)
coeffs(x) <- value
list_modifier(B)
getcoeffs(C, B)
Arguments
C, x |
A clifford object |
index |
elements to extract or replace |
value |
replacement value |
B |
A list of integer vectors, terms |
... |
Further arguments |
Details
Extraction and replacement methods. The extraction method uses
getcoeffs() and the replacement method uses low-level helper
function c_overwrite().
In the extraction function a[index], if index is a list,
further arguments are ignored; if not, the dots are used. If
index is a list, its elements are interpreted as integer vectors
indicating which terms to be extracted (even if it is a disord
object). If index is a disord object, standard
consistency rules are applied. The extraction methods are designed so
that idiom such as a[coeffs(a)>3] works.
For replacement methods, the standard use-case is a[i] <- b in
which argument i is a list of integer vectors and b a
length-one numeric vector. Otherwise, to manipulate parts of a clifford
object, use coeffs(a) <- value; this effectively leverages
disord formalism. Idiom such as a[coeffs(a)<2] <- 0 is
not currently implemented (to do this, use coeffs(a)[coeffs(a)<2]
<- 0). Replacement using a list-valued index, as in A[i] <-
value uses an ugly hack if value is zero. Replacement methods
are not yet finalised and not yet fully integrated with the
disordR package.
Idiom such as a[] <- b follows the spray package. If
b is a length-one scalar, then coeffs(a) <- b has the same
effect as a[] <- b.
Functions terms() [see term.Rd] and coeffs()
extract the terms and coefficients from a clifford object. These
functions return disord objects but the ordering is consistent
between them (an extended discussion of this phenomenon is presented in
the mvp package).
Function coeffs<-() (idiom coeffs(a) <- b) sets all
coefficients of a to b. This has the same effect as
a[] <- b.
Extraction and replacement methods treat 0 specially, translating
it (via list_modifier()) to numeric(0).
Extracting or replacing a list with a repeated elements is usually a Bad
Idea (tm). However, if option warn_on_repeats is set to
FALSE, no warning will be given (and the coefficient will be the
sum of the coefficients of the term; see the examples).
Function getcoeffs() is a lower-level helper function that lacks
the succour offered by [.clifford(). It returns a numeric vector
[not a disord object: the order of the elements is determined by
the order of argument B]. Compare standard extraction, eg
a[index], which returns a clifford object.
See Also
Examples
A <- clifford(list(1,1:2,1:3),1:3)
B <- clifford(list(1:2,1:6),c(44,45))
A[1,c(1,3,4)]
A[2:3, 4] <- 99
A[] <- B
# clifford(list(1,1:2,1:2),1:3) # would give a warning
options("warn_on_repeats" = FALSE)
clifford(list(1,1:2,1:2),1:3) # works; 1e1 + 5e_12
options("warn_on_repeats" = TRUE) # return to default behaviour.