Extract observations and/or variables from mfd
objects.
# S3 method for mfd
[(mfdobj, i = TRUE, j = TRUE)
An object of class mfd
.
Index specifying functional observations to extract or replace.
They can be numeric, character,
or logical vectors or empty (missing) or NULL.
Numeric values are coerced to integer as by as.integer
(and hence truncated towards zero).
The can also be negative integers,
indicating functional observations to leave out of the selection.
Logical vectors indicate TRUE for the observations to select.
Character vectors will be matched
to the argument fdnames[[2]]
of mfdobj
,
i.e. to functional observations' names.
Index specifying functional variables to extract or replace.
They can be numeric, logical,
or character vectors or empty (missing) or NULL.
Numeric values are coerced to integer as by as.integer
(and hence truncated towards zero).
The can also be negative integers,
indicating functional variables to leave out of the selection.
Logical vectors indicate TRUE for the variables to select.
Character vectors will be matched
to the argument fdnames[[3]]
of mfdobj
,
i.e. to functional variables' names.
a mfd
object with selected observations and variables.
This function adapts the fda::"[.fd"
function to be more robust and suitable
for the mfd
class.
In fact, whatever the number of observations
or variables you want to extract,
it always returns a mfd
object with a three-dimensional coef array.
In other words, it behaves as you would
always use the argument drop=FALSE
.
Moreover, you can extract observations
and variables both by index numbers and by names,
as you would normally do when using
`[`
with standard vector/matrices.
library(funcharts)
library(fda)
# In the following, we extract the first one/two observations/variables
# to see the difference with `[.fd`.
mfdobj <- data_sim_mfd()
fdobj <- fd(mfdobj$coefs, mfdobj$basis, mfdobj$fdnames)
# The argument `coef` in `fd`
# objects is converted to a matrix when possible.
dim(fdobj[1, 1]$coef)
#> [1] 5 1
# Not clear what is the second dimension:
# the number of replications or the number of variables?
dim(fdobj[1, 1:2]$coef)
#> [1] 5 2
dim(fdobj[1:2, 1]$coef)
#> [1] 5 2
# The argument `coef` in `mfd` objects is always a three-dimensional array.
dim(mfdobj[1, 1]$coef)
#> [1] 5 1 1
dim(mfdobj[1, 1:2]$coef)
#> [1] 5 1 2
dim(mfdobj[1:2, 1]$coef)
#> [1] 5 2 1
# Actually, `[.mfd` works as `[.fd` when passing also `drop = FALSE`
dim(fdobj[1, 1, drop = FALSE]$coef)
#> [1] 5 1 1
dim(fdobj[1, 1:2, drop = FALSE]$coef)
#> [1] 5 1 2
dim(fdobj[1:2, 1, drop = FALSE]$coef)
#> [1] 5 2 1