---
title: "How to use `write_lavaan()`"
author: "Rémi Thériault"
date: "October 6, 2023"
output:
rmarkdown::html_vignette:
toc: true
vignette: >
%\VignetteIndexEntry{How to use `write_lavaan()`}
%\VignetteEngine{knitr::rmarkdown}
---
This vignette covers the arguments of the `write_lavaan()` function and links to examples in other vignettes showing their usage.
## regression
The `regression` argument is a shorthand for the `~` operator. For example usage, see the [Regression vignette](https://lavaanextra.remi-theriault.com/articles/regression.html).
## covariance
The covariance argument is a shorthand for the `~~` operator. For example usage, see [Example 1](https://lavaanextra.remi-theriault.com/articles/example.html#example-1-model-syntax-1).
## intercept
The latent argument is a shorthand for the `~ 1` operator. For example usage, see [Example 1](https://lavaanextra.remi-theriault.com/articles/example.html#example-1-model-syntax-1).
## latent
The latent argument is a shorthand for the `=~` operator. For example usage see [Example 2](https://lavaanextra.remi-theriault.com/articles/example.html#example-2-a-cfa-example).
## constraints
Constraints can be specified with the `constraint.equal`, `constraint.smaller`, and `constraint.larger` argument, as showcased in [Example 4.6](https://lavaanextra.remi-theriault.com/articles/example.html#example-4-6).
## mediation
The `mediation` argument is also a shorthand for the `~` operator. However, the difference with the `regression` argument is that it can automatically specify path names when the argument `label` is set to `TRUE`. It is also possible to name the paths with letters instead of the variable names by setting `use.letters = TRUE`. For example usage, see [Example 5](https://lavaanextra.remi-theriault.com/articles/example.html#example-5-mediation).
## indirect
The indirect argument is a shorthand for the `:=` operator. For example usage, see [Example 5](https://lavaanextra.remi-theriault.com/articles/example.html#example-5-mediation).
## user-defined parameters
For user-defined parameters (e.g,. total effects), see [Example 5](https://lavaanextra.remi-theriault.com/articles/example.html#example-5-mediation).
## custom
Sometimes, some elements cannot be specified with the other arguments, and so the `custom` argument becomes handy to make tailored specifications, such as with Multilevel SEM in [Example 6](https://lavaanextra.remi-theriault.com/articles/example.html#example-6-multilevel-sem).
The `custom` argument can also be useful when having to specify thresholds with the "|" operator. For example usage, see [Example 10](https://lavaanextra.remi-theriault.com/articles/example.html#example-10-longitudinal-invariance).