These are simple functions that may be helpful to create the matrix objects
that mrgsolve expects. Functions are named based on whether they create a
diagonal matrix (d
), a block matrix (b
), or a a correlation
matrix (c
).
as_bmat(x, ...)
# S4 method for list
as_bmat(x, ...)
# S4 method for numeric
as_bmat(x, pat = "*", ...)
# S4 method for data.frame
as_bmat(x, pat = "*", cols = NULL, ...)
# S4 method for ANY
as_bmat(x, ...)
as_dmat(x, ...)
# S4 method for list
as_dmat(x, ...)
# S4 method for ANY
as_dmat(x, ...)
# S4 method for numeric
as_dmat(x, pat = "*", ...)
# S4 method for data.frame
as_dmat(x, pat = "*", cols = NULL, ...)
as_cmat(x, ...)
A numeric matrix for list and numeric methods. For data.frames, a list of matrices are returned.
Use as_dmat
to create a diagonal matrix, as_bmat
to create a block matrix, and as_cmat
to create a block
matrix where off-diagonal elements are understood to be correlations
rather than covariances. as_cmat
uses as_bmat
to
form the matrix and then converts off-diagonal elements to
covariances before returning.
The methods for data.frame
will work down the rows
of the data frame and make the appropriate matrix from
the data in each row. The result is a list of matrices.
df <- data.frame(
OMEGA1.1 = c(1,2),
OMEGA2.1 = c(11,22),
OMEGA2.2 = c(3,4),
SIGMA1.1 = 1,
FOO=-1
)
as_bmat(df, "OMEGA")
#> [[1]]
#> [,1] [,2]
#> [1,] 1 11
#> [2,] 11 3
#>
#> [[2]]
#> [,1] [,2]
#> [1,] 2 22
#> [2,] 22 4
#>
as_dmat(df,"SIGMA")
#> [[1]]
#> [,1]
#> [1,] 1
#>
#> [[2]]
#> [,1]
#> [1,] 1
#>
as_dmat(df[1,],"OMEGA")
#> [[1]]
#> [,1] [,2] [,3]
#> [1,] 1 0 0
#> [2,] 0 11 0
#> [3,] 0 0 3
#>