If multiple OMEGA (or SIGMA) blocks were written into the model,
these can be collapsed into a single matrix. This will not change the
functionality of the model, but will alter how OMEGA (or SIGMA) are
updated, usually making it easier. This "collapsing" of the matrix list
is irreversible.
collapse_omega(x, range = NULL, name = NULL)
collapse_sigma(x, range = NULL, name = NULL)a mrgmod object
numeric vector of length 2 specifying the range of matrices
to collapse in case there are more than 2. The second element may be NA
to indicate the length of the list of matrices.
a new name for the collapsed matrix; note that this is the
matrix name, not the labels which alias ETA(n) or EPS(n); specifying a
name will only alter how this matrix is potentially updated in the future
A model object with updated OMEGA or SIGMA matrix lists.
code <- '
$OMEGA 1 2 3
$OMEGA 4 5
$OMEGA 6 7 8 9
'
mod <- mcode("collapse-example", code, compile = FALSE)
revar(mod)
#> $omega
#> $...
#> [,1] [,2] [,3]
#> 1: 1 0 0
#> 2: 0 2 0
#> 3: 0 0 3
#>
#> $...
#> [,1] [,2]
#> 4: 4 0
#> 5: 0 5
#>
#> $...
#> [,1] [,2] [,3] [,4]
#> 6: 6 0 0 0
#> 7: 0 7 0 0
#> 8: 0 0 8 0
#> 9: 0 0 0 9
#>
#>
#> $sigma
#> No matrices found
#>
collapse_omega(mod) %>% omat()
#> $...
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
#> 1: 1 0 0 0 0 0 0 0 0
#> 2: 0 2 0 0 0 0 0 0 0
#> 3: 0 0 3 0 0 0 0 0 0
#> 4: 0 0 0 4 0 0 0 0 0
#> 5: 0 0 0 0 5 0 0 0 0
#> 6: 0 0 0 0 0 6 0 0 0
#> 7: 0 0 0 0 0 0 7 0 0
#> 8: 0 0 0 0 0 0 0 8 0
#> 9: 0 0 0 0 0 0 0 0 9
#>
collapse_omega(mod, range = c(2,3), name = "new_matrix") %>% omat()
#> $...
#> [,1] [,2] [,3]
#> 1: 1 0 0
#> 2: 0 2 0
#> 3: 0 0 3
#>
#> $new_matrix
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> 4: 4 0 0 0 0 0
#> 5: 0 5 0 0 0 0
#> 6: 0 0 6 0 0 0
#> 7: 0 0 0 7 0 0
#> 8: 0 0 0 0 8 0
#> 9: 0 0 0 0 0 9
#>
collapse_omega(mod, range = c(2,NA), name = "new_matrix") %>% omat()
#> $...
#> [,1] [,2] [,3]
#> 1: 1 0 0
#> 2: 0 2 0
#> 3: 0 0 3
#>
#> $new_matrix
#> [,1] [,2] [,3] [,4] [,5] [,6]
#> 4: 4 0 0 0 0 0
#> 5: 0 5 0 0 0 0
#> 6: 0 0 6 0 0 0
#> 7: 0 0 0 7 0 0
#> 8: 0 0 0 0 8 0
#> 9: 0 0 0 0 0 9
#>