int k;
struct regression regression;
const struct dictionary *dict = dataset_dict (ds);
+ bool save;
memset (®ression, 0, sizeof (struct regression));
regression.models = xcalloc (regression.n_dep_vars, sizeof *regression.models);
+ save = regression.pred || regression.resid;
+ if (save)
+ {
+ if (proc_make_temporary_transformations_permanent (ds))
+ msg (SW, _("REGRESSION with SAVE ignores TEMPORARY. "
+ "Temporary transformations will be made permanent."));
+ }
+
{
struct casegrouper *grouper;
struct casereader *group;
bool ok;
- grouper = casegrouper_create_splits (proc_open (ds), dict);
+ grouper = casegrouper_create_splits (proc_open_filtering (ds, !save),
+ dict);
while (casegrouper_get_next_group (grouper, &group))
run_regression (®ression, group);
ok = casegrouper_destroy (grouper);
ok = proc_commit (ds) && ok;
}
- if (regression.pred || regression.resid )
+ if (save)
{
subcommand_save (®ression);
}
return CMD_SUCCESS;
error:
+ if (regression.models)
+ {
for (k = 0; k < regression.n_dep_vars; k++)
linreg_unref (regression.models[k]);
free (regression.models);
+ }
free (regression.vars);
free (regression.dep_vars);
return CMD_FAILURE;