Convert a named vector to a list of lists, to be used
by various functions in semptools
.
to_list_of_lists(input, name1 = NULL, name2 = NULL, name3 = NULL)
A named vector
The name for the first element in the list-in-list.
Default is NULL
.
The name for the second element in the list-in-list.
Defaultis NULL
.
The name for the third element in the list-in-list.
Default is NULL
. If this argument is not NULL
, the names of the
vector elements will be split using lavaan
syntax (by calling
lavaan::lavParseModelString()
), and the right-hand side (rhs
)
and left-hand side (lhs
) of each element will be assigned to
name1
and name2
, respectively.
A list of lists.
This function is not to be used by users, but to be used
internally by other functions of semptools
.
x <- c("x1 ~~ x2" = -1, "x4 ~ x1" = 1)
to_list_of_lists(x, name1 = "from", name2 = "to", name3 = "new_curve")
#> [[1]]
#> [[1]]$from
#> [1] "x2"
#>
#> [[1]]$to
#> [1] "x1"
#>
#> [[1]]$new_curve
#> [1] -1
#>
#>
#> [[2]]
#> [[2]]$from
#> [1] "x1"
#>
#> [[2]]$to
#> [1] "x4"
#>
#> [[2]]$new_curve
#> [1] 1
#>
#>
#list(list(from = "x1", to = "x2", new_curve = -1),
# list(from = "x1", to = "x4", new_curve = 1))
y <- c(x1 = 0, x2 = 180, x3 = 140, x4 = 140)
to_list_of_lists(y, name1 = "node", name2 = "rotate")
#> [[1]]
#> [[1]]$node
#> [1] "x1"
#>
#> [[1]]$rotate
#> [1] 0
#>
#>
#> [[2]]
#> [[2]]$node
#> [1] "x2"
#>
#> [[2]]$rotate
#> [1] 180
#>
#>
#> [[3]]
#> [[3]]$node
#> [1] "x3"
#>
#> [[3]]$rotate
#> [1] 140
#>
#>
#> [[4]]
#> [[4]]$node
#> [1] "x4"
#>
#> [[4]]$rotate
#> [1] 140
#>
#>
#list(list(node = "x1", rotate = 0),
# list(node = "x2", rotate = 180),
# list(node = "x3", rotate = 140),
# list(node = "x4", rotate = 140))