The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Save Models to Local Disk

Shixiang Wang

Central South University
wangshx@csu.edu.cn

2025-08-19

library(bregr)

Two global options have been introduced to control whether models are saved as local files (bregr.save_model, default is FALSE) and where they should be saved (bregr.path, default uses a temporary path).

options(bregr.save_model = TRUE)
# Set model save path if necessary
# options(bregr.path = "/model/to/path")

m <- breg(mtcars) |>
  br_set_y("mpg") |>
  br_set_x(colnames(mtcars)[2:4]) |>
  br_set_x2("vs") |>
  br_set_model("gaussian") |>
  br_run()
#> model save is enabled with result path
#> '/var/folders/h0/s_35svc15n1glmp65lbbkx9w0000gn/T/Rtmpic8QyJ'
#> This message is displayed once per session.

options(bregr.save_model = FALSE)

In summary, the models have been saved to a unique path. We can verify this by examining the model objects:

m@models
#> $cyl
#> /var/folders/h0/s_35svc15n1glmp65lbbkx9w0000gn/T/Rtmpic8QyJ/a8711976-7ce2-11f0-b02e-9e303ab0d61b.qs
#> 
#> $disp
#> /var/folders/h0/s_35svc15n1glmp65lbbkx9w0000gn/T/Rtmpic8QyJ/a88543e2-7ce2-11f0-b02e-9e303ab0d61b.qs
#> 
#> $hp
#> /var/folders/h0/s_35svc15n1glmp65lbbkx9w0000gn/T/Rtmpic8QyJ/a898091e-7ce2-11f0-b02e-9e303ab0d61b.qs

We can retrieve the saved models using the following commands:

br_get_models(m, 1)
#> 
#> Call:  stats::glm(formula = mpg ~ cyl + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl           vs  
#>     39.6250      -3.0907      -0.9391  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 306   AIC: 171.1
br_get_models(m, c(1, 3))
#> $cyl
#> 
#> Call:  stats::glm(formula = mpg ~ cyl + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl           vs  
#>     39.6250      -3.0907      -0.9391  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 306   AIC: 171.1
#> 
#> $hp
#> 
#> Call:  stats::glm(formula = mpg ~ hp + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)           hp           vs  
#>    26.96300     -0.05453      2.57622  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 422.7     AIC: 181.4
br_get_models(m, "cyl")
#> 
#> Call:  stats::glm(formula = mpg ~ cyl + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl           vs  
#>     39.6250      -3.0907      -0.9391  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 306   AIC: 171.1
br_get_models(m, c("cyl", "hp"))
#> $cyl
#> 
#> Call:  stats::glm(formula = mpg ~ cyl + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl           vs  
#>     39.6250      -3.0907      -0.9391  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 306   AIC: 171.1
#> 
#> $hp
#> 
#> Call:  stats::glm(formula = mpg ~ hp + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)           hp           vs  
#>    26.96300     -0.05453      2.57622  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 422.7     AIC: 181.4
br_get_models(m)
#> $cyl
#> 
#> Call:  stats::glm(formula = mpg ~ cyl + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl           vs  
#>     39.6250      -3.0907      -0.9391  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 306   AIC: 171.1
#> 
#> $disp
#> 
#> Call:  stats::glm(formula = mpg ~ disp + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)         disp           vs  
#>     27.9493      -0.0369       1.4950  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 308.4     AIC: 171.3
#> 
#> $hp
#> 
#> Call:  stats::glm(formula = mpg ~ hp + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)           hp           vs  
#>    26.96300     -0.05453      2.57622  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 422.7     AIC: 181.4

The modeling results should remain consistent, regardless of whether they are saved or not.

Run without saving models.

m2 <- breg(mtcars) |>
  br_set_y("mpg") |>
  br_set_x(colnames(mtcars)[2:4]) |>
  br_set_x2("vs") |>
  br_set_model("gaussian") |>
  br_run()
m2@models
#> $cyl
#> 
#> Call:  stats::glm(formula = mpg ~ cyl + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)          cyl           vs  
#>     39.6250      -3.0907      -0.9391  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 306   AIC: 171.1
#> 
#> $disp
#> 
#> Call:  stats::glm(formula = mpg ~ disp + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)         disp           vs  
#>     27.9493      -0.0369       1.4950  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 308.4     AIC: 171.3
#> 
#> $hp
#> 
#> Call:  stats::glm(formula = mpg ~ hp + vs, family = stats::gaussian, 
#>     data = data)
#> 
#> Coefficients:
#> (Intercept)           hp           vs  
#>    26.96300     -0.05453      2.57622  
#> 
#> Degrees of Freedom: 31 Total (i.e. Null);  29 Residual
#> Null Deviance:       1126 
#> Residual Deviance: 422.7     AIC: 181.4
all.equal(m, m2)
#> [1] TRUE

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.