## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## -----------------------------------------------------------------------------
library(EFAtools)

## -----------------------------------------------------------------------------
cor_mat <- test_models$baseline$cormat

# Recommended name -- exactly the same arguments as KMO():
efa_kmo(cor_mat)

# The old name still works and returns the same result:
identical(KMO(cor_mat)$KMO, efa_kmo(cor_mat)$KMO)

## -----------------------------------------------------------------------------
# Old flat interface
efa_old <- EFA(cor_mat, n_factors = 3, N = 500, type = "SPSS")

# New interface: the SPSS preset travels through the two control objects
efa_new <- efa_fit(cor_mat, n_factors = 3, N = 500,
                   estimate_control = estimate_control(type = "SPSS"),
                   rotate_control = rotate_control(type = "SPSS"))

# Identical numerical result
all.equal(efa_old$rot_loadings, efa_new$rot_loadings)

## ----eval = FALSE-------------------------------------------------------------
# efa_fit(cor_mat, n_factors = 3, N = 500, rotation = "promax",
#         estimate_control = estimate_control(type = "SPSS", max_iter = 500),
#         rotate_control   = rotate_control(type = "SPSS", k = 3))

## ----eval = FALSE-------------------------------------------------------------
# efa_fit(cor_mat, n_factors = 3, N = 500, max_iter = 500)
# #> Error: `max_iter` cannot be passed to `efa_fit()` directly.
# #> i The estimation and rotation tuning knobs live in `estimate_control()` and `rotate_control()`.
# #> i For example: `efa_fit(x, ..., estimate_control = estimate_control(max_iter = 500))`.

## -----------------------------------------------------------------------------
class(efa_new)
inherits(efa_new, "EFA")

