cjvanlissa / tidySEM

54 stars 7 forks source link

Dependencies and imports #52

Closed sda030 closed 1 year ago

sda030 commented 1 year ago

Bundling several related issues here. 1) Given the general advice on package dependencies, I find it strange that OpenMX is listed as a dependency, whereas (b)lavaan and MplusAutomation are imports?

2) Relatedly, whereas I enjoy having easy access to all three packages, one could conceive adding the sem-package or any other new coming in the future. Most of the core functionality in tidySEM are not so dependent on the modelling packages. A bit borderline perhaps, but one could consider placing all three as Suggests, and let the user load them as needed? Though I am not very experienced on judging this issue.

3) lavaan seems to not be found unless loaded explicitly. Given that it is listed as imports I would expect explicit call to library(lavaan) to be unnecessary. (I suspect this is the reason why OpenMX was placed as Depends?)

library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
library(tidySEM)
#> Loading required package: OpenMx
data_mix_ordinal %>%
  rename_with(.fn = ~ paste0("u_", 1:4)) %>%
  tidy_sem() %>%
  measurement() %>%
  estimate_lavaan()
#> Error in sem(model = structure(list(lhs = c("u", "u", "u", "u", "u_1", : could not find function "sem"

Created on 2022-07-17 by the reprex package (v2.0.1)

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.2.1 (2022-06-23 ucrt) #> os Windows 10 x64 (build 22000) #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate nb.utf8 #> ctype nb.utf8 #> tz Europe/Berlin #> date 2022-07-17 #> pandoc 2.17.1.1 @ C:/Program Files/RStudio/bin/quarto/bin/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> ! package * version date (UTC) lib source #> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.3) #> backports 1.4.1 2021-12-13 [1] CRAN (R 4.1.2) #> bayesplot 1.9.0 2022-03-10 [1] CRAN (R 4.2.1) #> blavaan 0.4-3 2022-05-11 [1] CRAN (R 4.2.1) #> boot 1.3-28 2021-05-03 [2] CRAN (R 4.2.1) #> callr 3.7.1 2022-07-13 [1] CRAN (R 4.2.1) #> checkmate 2.1.0 2022-04-21 [1] CRAN (R 4.1.3) #> cli 3.3.0 2022-04-25 [1] CRAN (R 4.1.3) #> coda 0.19-4 2020-09-30 [1] CRAN (R 4.0.3) #> codetools 0.2-18 2020-11-04 [2] CRAN (R 4.2.1) #> colorspace 2.0-3 2022-02-21 [1] CRAN (R 4.1.2) #> CompQuadForm 1.4.3 2017-04-12 [1] CRAN (R 4.2.0) #> crayon 1.5.1 2022-03-26 [1] CRAN (R 4.1.3) #> data.table 1.14.2 2021-09-27 [1] CRAN (R 4.1.1) #> DBI 1.1.3 2022-06-18 [1] CRAN (R 4.2.0) #> digest 0.6.29 2021-12-01 [1] CRAN (R 4.1.2) #> dplyr * 1.0.9 2022-04-28 [1] CRAN (R 4.2.1) #> ellipsis 0.3.2 2021-04-29 [1] CRAN (R 4.0.5) #> evaluate 0.15 2022-02-18 [1] CRAN (R 4.1.2) #> fansi 1.0.3 2022-03-24 [1] CRAN (R 4.1.3) #> fastDummies 1.6.3 2020-11-29 [1] CRAN (R 4.1.0) #> fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.0.3) #> fs 1.5.2 2021-12-08 [1] CRAN (R 4.1.2) #> future 1.26.1 2022-05-27 [1] CRAN (R 4.2.0) #> future.apply 1.9.0 2022-04-25 [1] CRAN (R 4.1.3) #> generics 0.1.3 2022-07-05 [1] CRAN (R 4.2.1) #> ggplot2 3.3.6 2022-05-03 [1] CRAN (R 4.2.0) #> ggridges 0.5.3 2021-01-08 [1] CRAN (R 4.2.1) #> globals 0.15.1 2022-06-24 [1] CRAN (R 4.2.1) #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.1.2) #> gridExtra 2.3 2017-09-09 [1] CRAN (R 4.0.3) #> gsubfn 0.7 2018-03-16 [1] CRAN (R 4.0.3) #> gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.3) #> highr 0.9 2021-04-16 [1] CRAN (R 4.0.5) #> htmltools 0.5.2 2021-08-25 [1] CRAN (R 4.1.1) #> httr 1.4.3 2022-05-04 [1] CRAN (R 4.1.3) #> igraph 1.3.3 2022-07-15 [1] CRAN (R 4.2.1) #> inline 0.3.19 2021-05-31 [1] CRAN (R 4.2.1) #> knitr 1.39 2022-04-26 [1] CRAN (R 4.1.3) #> lattice 0.20-45 2021-09-22 [2] CRAN (R 4.2.1) #> lavaan 0.6-12 2022-07-04 [1] CRAN (R 4.2.1) #> lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1) #> listenv 0.8.0 2019-12-05 [1] CRAN (R 4.0.3) #> loo 2.5.1 2022-03-24 [1] CRAN (R 4.2.1) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.1.3) #> MASS 7.3-57 2022-04-22 [2] CRAN (R 4.2.1) #> Matrix 1.4-1 2022-03-23 [2] CRAN (R 4.2.1) #> matrixStats 0.62.0 2022-04-19 [1] CRAN (R 4.1.3) #> mnormt 2.1.0 2022-06-07 [1] CRAN (R 4.2.0) #> MplusAutomation 1.1.1 2022-07-15 [1] local #> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.3) #> mvtnorm 1.1-3 2021-10-08 [1] CRAN (R 4.1.0) #> nlme 3.1-157 2022-03-25 [2] CRAN (R 4.2.1) #> nonnest2 0.5-5 2020-07-05 [1] CRAN (R 4.2.1) #> OpenMx * 2.20.6 2022-03-09 [1] CRAN (R 4.1.3) #> pander 0.6.5 2022-03-18 [1] CRAN (R 4.1.3) #> parallelly 1.32.0 2022-06-07 [1] CRAN (R 4.2.0) #> pbivnorm 0.6.0 2015-01-23 [1] CRAN (R 4.0.3) #> pillar 1.7.0 2022-02-01 [1] CRAN (R 4.1.2) #> pkgbuild 1.3.1 2021-12-20 [1] CRAN (R 4.1.2) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.3) #> plyr 1.8.7 2022-03-24 [1] CRAN (R 4.1.3) #> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.3) #> processx 3.7.0 2022-07-07 [1] CRAN (R 4.2.1) #> proto 1.0.0 2016-10-29 [1] CRAN (R 4.0.3) #> ps 1.7.1 2022-06-18 [1] CRAN (R 4.2.0) #> psych 2.2.5 2022-05-10 [1] CRAN (R 4.1.3) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.0.3) #> R.cache 0.15.0 2021-04-30 [1] CRAN (R 4.2.1) #> R.methodsS3 1.8.2 2022-06-13 [1] CRAN (R 4.2.0) #> R.oo 1.25.0 2022-06-12 [1] CRAN (R 4.2.0) #> R.utils 2.12.0 2022-06-28 [1] CRAN (R 4.2.1) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.1) #> Rcpp 1.0.9 2022-07-08 [1] CRAN (R 4.2.1) #> D RcppParallel 5.1.5 2022-01-05 [1] CRAN (R 4.1.2) #> reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.0) #> rlang 1.0.4 2022-07-12 [1] CRAN (R 4.2.1) #> rmarkdown 2.14 2022-04-25 [1] CRAN (R 4.1.3) #> rstan 2.21.5 2022-04-11 [1] CRAN (R 4.2.1) #> rstantools 2.2.0 2022-04-08 [1] CRAN (R 4.2.1) #> rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.0.3) #> sandwich 3.0-2 2022-06-15 [1] CRAN (R 4.2.1) #> scales 1.2.0 2022-04-13 [1] CRAN (R 4.1.3) #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.1.2) #> StanHeaders 2.21.0-7 2020-12-17 [1] CRAN (R 4.1.1) #> stringi 1.7.8 2022-07-11 [1] CRAN (R 4.2.1) #> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.3) #> styler 1.7.0 2022-03-13 [1] CRAN (R 4.2.1) #> texreg 1.38.6 2022-04-06 [1] CRAN (R 4.1.3) #> tibble 3.1.7 2022-05-03 [1] CRAN (R 4.1.3) #> tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.2.1) #> tidySEM * 0.2.3 2022-04-14 [1] CRAN (R 4.2.1) #> tmvnsim 1.0-2 2016-12-15 [1] CRAN (R 4.2.0) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.0) #> vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.1.3) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.1.2) #> xfun 0.31 2022-05-10 [1] CRAN (R 4.2.0) #> xtable 1.8-4 2019-04-21 [1] CRAN (R 4.0.3) #> yaml 2.3.5 2022-02-21 [1] CRAN (R 4.1.2) #> zoo 1.8-10 2022-04-15 [1] CRAN (R 4.1.3) #> #> [1] C:/Users/py128/OneDrive - NIFU/R #> [2] C:/Program Files/R/R-4.2.1/library #> #> D ── DLL MD5 mismatch, broken installation. #> #> ────────────────────────────────────────────────────────────────────────────── ```
cjvanlissa commented 1 year ago

Some good points here. OpenMx was in the depends to suggest the use of this package over others, but the software doesn't need to be that opinionated. Moving these packages to Suggests is not a good idea; some are needed for core functionality, and I've never been able to move packages to Suggests without breaking a bunch of integration tests.

I fixed the namespace issue with lavaan.

cjvanlissa commented 1 year ago

I have to come back to this, because without importing all of OpenMx, the mixture modeling functions fail spectacularly.

sda030 commented 1 year ago

I see. Sounds though that the real issue is at OpenMx, but I doubt troubleshooting and modifying that over there will be prioritized given the legacy and complexity of it... I have found another namespace issue, this time with MplusAutomation (if you do not mind me reusing this issue-thread as I think it is a quick fix). Works after loading MplusAutomation.

library(tidySEM)
#> Loading required package: OpenMx
x<- tidySEM::data_mix_ordinal
x<- setNames(x, paste0("x_", 1:4))
x<- tidySEM::tidy_sem(x)
x<- tidySEM::measurement(x)
x<- tidySEM::estimate_mplus(x)
#> Warning in is.null(x) || !nzchar(gsub("\\s*", "", x, perl = TRUE)): 'length(x) =
#> 14 > 1' in coercion to 'logical(1)'
tidySEM::table_fit(x)
#> Error in SummaryTable(keepCols = NULL, modelList = structure(list(input = structure(list(: could not find function "SummaryTable"

Created on 2022-07-28 by the reprex package (v2.0.1)

Session info ``` r sessioninfo::session_info() #> ─ Session info ─────────────────────────────────────────────────────────────── #> setting value #> version R version 4.2.1 (2022-06-23 ucrt) #> os Windows 10 x64 (build 22000) #> system x86_64, mingw32 #> ui RTerm #> language (EN) #> collate nb.utf8 #> ctype nb.utf8 #> tz Europe/Berlin #> date 2022-07-28 #> pandoc 2.18 @ C:/Program Files/RStudio/bin/quarto/bin/tools/ (via rmarkdown) #> #> ─ Packages ─────────────────────────────────────────────────────────────────── #> ! package * version date (UTC) lib source #> assertthat 0.2.1 2019-03-21 [1] CRAN (R 4.0.3) #> backports 1.4.1 2021-12-13 [1] CRAN (R 4.1.2) #> bayesplot 1.9.0 2022-03-10 [1] CRAN (R 4.2.1) #> blavaan 0.4-3 2022-05-11 [1] CRAN (R 4.2.1) #> boot 1.3-28 2021-05-03 [2] CRAN (R 4.2.1) #> callr 3.7.1 2022-07-13 [1] CRAN (R 4.2.1) #> checkmate 2.1.0 2022-04-21 [1] CRAN (R 4.1.3) #> cli 3.3.0 2022-04-25 [1] CRAN (R 4.1.3) #> coda 0.19-4 2020-09-30 [1] CRAN (R 4.0.3) #> codetools 0.2-18 2020-11-04 [2] CRAN (R 4.2.1) #> colorspace 2.0-3 2022-02-21 [1] CRAN (R 4.1.2) #> CompQuadForm 1.4.3 2017-04-12 [1] CRAN (R 4.2.0) #> crayon 1.5.1 2022-03-26 [1] CRAN (R 4.1.3) #> data.table 1.14.2 2021-09-27 [1] CRAN (R 4.1.1) #> DBI 1.1.3 2022-06-18 [1] CRAN (R 4.2.0) #> digest 0.6.29 2021-12-01 [1] CRAN (R 4.1.2) #> dplyr 1.0.9 2022-04-28 [1] CRAN (R 4.2.1) #> evaluate 0.15 2022-02-18 [1] CRAN (R 4.1.2) #> fansi 1.0.3 2022-03-24 [1] CRAN (R 4.1.3) #> fastDummies 1.6.3 2020-11-29 [1] CRAN (R 4.1.0) #> fastmap 1.1.0 2021-01-25 [1] CRAN (R 4.0.3) #> fs 1.5.2 2021-12-08 [1] CRAN (R 4.1.2) #> future 1.27.0 2022-07-22 [1] CRAN (R 4.2.1) #> future.apply 1.9.0 2022-04-25 [1] CRAN (R 4.1.3) #> generics 0.1.3 2022-07-05 [1] CRAN (R 4.2.1) #> ggplot2 3.3.6 2022-05-03 [1] CRAN (R 4.2.0) #> ggridges 0.5.3 2021-01-08 [1] CRAN (R 4.2.1) #> globals 0.15.1 2022-06-24 [1] CRAN (R 4.2.1) #> glue 1.6.2 2022-02-24 [1] CRAN (R 4.1.2) #> gridExtra 2.3 2017-09-09 [1] CRAN (R 4.0.3) #> gsubfn 0.7 2018-03-16 [1] CRAN (R 4.0.3) #> gtable 0.3.0 2019-03-25 [1] CRAN (R 4.0.3) #> highr 0.9 2021-04-16 [1] CRAN (R 4.0.5) #> htmltools 0.5.3 2022-07-18 [1] CRAN (R 4.2.1) #> httr 1.4.3 2022-05-04 [1] CRAN (R 4.1.3) #> igraph 1.3.4 2022-07-19 [1] CRAN (R 4.2.1) #> inline 0.3.19 2021-05-31 [1] CRAN (R 4.2.1) #> knitr 1.39 2022-04-26 [1] CRAN (R 4.1.3) #> lattice 0.20-45 2021-09-22 [2] CRAN (R 4.2.1) #> lavaan 0.6-12 2022-07-04 [1] CRAN (R 4.2.1) #> lifecycle 1.0.1 2021-09-24 [1] CRAN (R 4.1.1) #> listenv 0.8.0 2019-12-05 [1] CRAN (R 4.0.3) #> loo 2.5.1 2022-03-24 [1] CRAN (R 4.2.1) #> magrittr 2.0.3 2022-03-30 [1] CRAN (R 4.1.3) #> MASS 7.3-57 2022-04-22 [2] CRAN (R 4.2.1) #> Matrix 1.4-1 2022-03-23 [2] CRAN (R 4.2.1) #> matrixStats 0.62.0 2022-04-19 [1] CRAN (R 4.1.3) #> mnormt 2.1.0 2022-06-07 [1] CRAN (R 4.2.0) #> MplusAutomation 1.1.1 2022-07-15 [1] local #> munsell 0.5.0 2018-06-12 [1] CRAN (R 4.0.3) #> mvtnorm 1.1-3 2021-10-08 [1] CRAN (R 4.1.0) #> nlme 3.1-157 2022-03-25 [2] CRAN (R 4.2.1) #> nonnest2 0.5-5 2020-07-05 [1] CRAN (R 4.2.1) #> OpenMx * 2.20.6 2022-03-09 [1] CRAN (R 4.1.3) #> pander 0.6.5 2022-03-18 [1] CRAN (R 4.1.3) #> parallelly 1.32.1 2022-07-21 [1] CRAN (R 4.2.1) #> pbivnorm 0.6.0 2015-01-23 [1] CRAN (R 4.0.3) #> pillar 1.8.0 2022-07-18 [1] CRAN (R 4.2.1) #> pkgbuild 1.3.1 2021-12-20 [1] CRAN (R 4.1.2) #> pkgconfig 2.0.3 2019-09-22 [1] CRAN (R 4.0.3) #> plyr 1.8.7 2022-03-24 [1] CRAN (R 4.1.3) #> prettyunits 1.1.1 2020-01-24 [1] CRAN (R 4.0.3) #> processx 3.7.0 2022-07-07 [1] CRAN (R 4.2.1) #> proto 1.0.0 2016-10-29 [1] CRAN (R 4.0.3) #> ps 1.7.1 2022-06-18 [1] CRAN (R 4.2.0) #> psych 2.2.5 2022-05-10 [1] CRAN (R 4.1.3) #> purrr 0.3.4 2020-04-17 [1] CRAN (R 4.0.3) #> R.cache 0.16.0 2022-07-21 [1] CRAN (R 4.2.1) #> R.methodsS3 1.8.2 2022-06-13 [1] CRAN (R 4.2.0) #> R.oo 1.25.0 2022-06-12 [1] CRAN (R 4.2.0) #> R.utils 2.12.0 2022-06-28 [1] CRAN (R 4.2.1) #> R6 2.5.1 2021-08-19 [1] CRAN (R 4.1.1) #> Rcpp 1.0.9 2022-07-08 [1] CRAN (R 4.2.1) #> D RcppParallel 5.1.5 2022-01-05 [1] CRAN (R 4.1.2) #> reprex 2.0.1 2021-08-05 [1] CRAN (R 4.1.0) #> rlang 1.0.4 2022-07-12 [1] CRAN (R 4.2.1) #> rmarkdown 2.14 2022-04-25 [1] CRAN (R 4.1.3) #> rstan 2.21.5 2022-04-11 [1] CRAN (R 4.2.1) #> rstantools 2.2.0 2022-04-08 [1] CRAN (R 4.2.1) #> rstudioapi 0.13 2020-11-12 [1] CRAN (R 4.0.3) #> sandwich 3.0-2 2022-06-15 [1] CRAN (R 4.2.1) #> scales 1.2.0 2022-04-13 [1] CRAN (R 4.1.3) #> sessioninfo 1.2.2 2021-12-06 [1] CRAN (R 4.1.2) #> StanHeaders 2.21.0-7 2020-12-17 [1] CRAN (R 4.1.1) #> stringi 1.7.8 2022-07-11 [1] CRAN (R 4.2.1) #> stringr 1.4.0 2019-02-10 [1] CRAN (R 4.0.3) #> styler 1.7.0 2022-03-13 [1] CRAN (R 4.2.1) #> texreg 1.38.6 2022-04-06 [1] CRAN (R 4.1.3) #> tibble 3.1.8 2022-07-22 [1] CRAN (R 4.2.1) #> tidyselect 1.1.2 2022-02-21 [1] CRAN (R 4.2.1) #> tidySEM * 0.2.3 2022-04-14 [1] CRAN (R 4.2.1) #> tmvnsim 1.0-2 2016-12-15 [1] CRAN (R 4.2.0) #> utf8 1.2.2 2021-07-24 [1] CRAN (R 4.1.0) #> vctrs 0.4.1 2022-04-13 [1] CRAN (R 4.1.3) #> withr 2.5.0 2022-03-03 [1] CRAN (R 4.1.2) #> xfun 0.31 2022-05-10 [1] CRAN (R 4.2.0) #> xtable 1.8-4 2019-04-21 [1] CRAN (R 4.0.3) #> yaml 2.3.5 2022-02-21 [1] CRAN (R 4.1.2) #> zoo 1.8-10 2022-04-15 [1] CRAN (R 4.1.3) #> #> [1] C:/Users/py128/OneDrive - NIFU/R #> [2] C:/Program Files/R/R-4.2.1/library #> #> D ── DLL MD5 mismatch, broken installation. #> #> ────────────────────────────────────────────────────────────────────────────── ```
cjvanlissa commented 1 year ago

The point you raised is fixed now, thanks.

As for OpenMx.. I can't get it to work using imports. My guess is they handle the namespace messily internally, but I don't have time to try to submit a pull request to fix it. Having it on the Depends is not a problem per se, so it will stay that way for now.