coords {jvcoords} | R Documentation |
An S3 class to represent affine coordinate transforms
Description
Perform affine coordinate transformations.
Usage
coords(p, name = NULL, shift = 0)
appendTrfm(trfm, op = c("diag", "orth"), val)
toCoords(trfm, x)
fromCoords(trfm, y, apply.shift = TRUE)
Arguments
p |
The number of variables in the original data. |
name |
A short name for the coordinate transformation (optional). |
shift |
A value subtracted from the data as the first step of the coordinate transformation. Usually, this will be the mean of the data (optional). |
trfm |
An object of class |
op |
The type of transformation to append. |
val |
Data for the transformation to append. |
x |
Data matrix, rows are observations, columns are variables. |
y |
Transformed data matrix, rows are observations, columns are variables. |
apply.shift |
Whether to apply the final shift of coordinates.
Set this to |
Details
The function coords()
creates a new object representing an
affine coordinate transformation. Initially, the object represents a
shift by the amount shift
, mapping p
-dimensional vectors
x
to x-shift
. The function appendTrfm()
can then
be used to modify the transformation. The optional argument
name
, if set, is used when printing objects of class
coords
.
The function toCoords()
applies the affine transformation trfm
to the data x
. The data x
must either be a vector of
length trfm$p
, in which case the result is a vector of
length trfm$q
, or a matrix with trfm$p
columns, in which case
the transformation is applied to each row of the matrix separately.
The function fromCoords()
implements the inverse transform
to toCoords()
. The output always satisfies
toCoords(trfm, fromCoords(trfm, y)) == y
. If
trfm$p == trfm$q
, i.e. if the transformation is bijective,
the fromCoords(trfm, toCoords(trfm, x)) == x
also holds.
The argument apply.shift
can be set to false to apply only
the linear part of the (inverse) transformation, leaving out the
final shift.
The function appendTrfm()
concatenates trfm
with an
additional, linear transformation and returns the result. The
arguments op
and val
specify which kind of linear
transformation to append. There are two choices for op
:
-
diag
denotes multiplication with a diagonal matrix: an input vectorx
is mapped to the outputx * val
. The scaling factorval
can either be a vector of lengthtrfm$q
(for element-wise scaling), or a number. -
orth
denotes multiplication with an orthogonal matrix.val
must be a matrix with orthogonal columns (not necessarily square) andtrfm$q
rows. An input vectorx
is mapped to the outputx %*% orth
.
The new transformation is applied after any other transformations
already associated with trfm
.
Value
An object of class coords
, as a list with the following
components:
p |
the number of variables in the original data set |
q |
the number of variables in the transformed data set |
shift |
the affine part of the transformation |
name |
the name of the transformation |
cmds |
a representation of the transformation (internal use only) |
Author(s)
Jochen Voss <voss@seehuhn.de>
See Also
Examples
pc <- PCA(iris[, 1:4], n.comp = 3)
toCoords(pc, c(5, 3, 4, 1))
fromCoords(pc, c(1, 0, 0))