Extract observations and/or variables from `mfd`

objects.

```
# S3 method for mfd
[(mfdobj, i = TRUE, j = TRUE)
```

- mfdobj
An object of class

`mfd`

.- i
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.- j
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
```