X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flanguage%2Fstats%2Ffactor.c;h=d50d6ad3fdf2c5b6eb6c86bbbe3e3044a893f4ac;hb=99918a5a4da287dfe6b976c06c578674f6e11ea0;hp=83dc13de7ed5a28f92e16cd8e24e2a2a02c77b25;hpb=2549b2a2bf0e74089dfdb71676a4bb66e0749ab2;p=pspp diff --git a/src/language/stats/factor.c b/src/language/stats/factor.c index 83dc13de7e..d50d6ad3fd 100644 --- a/src/language/stats/factor.c +++ b/src/language/stats/factor.c @@ -211,6 +211,7 @@ idata_free (struct idata *id) } +#if 0 static void dump_matrix (const gsl_matrix *m) { @@ -249,6 +250,7 @@ dump_vector (const gsl_vector *v) } printf ("\n"); } +#endif static int @@ -1682,7 +1684,7 @@ do_factor (const struct cmd_factor *factor, struct casereader *r) const gsl_matrix *analysis_matrix; struct idata *idata = idata_alloc (factor->n_vars); - struct covariance *cov = covariance_create (factor->n_vars, factor->vars, + struct covariance *cov = covariance_1pass_create (factor->n_vars, factor->vars, factor->wv, factor->exclude); for ( ; (c = casereader_read (r) ); case_unref (c)) @@ -1692,6 +1694,12 @@ do_factor (const struct cmd_factor *factor, struct casereader *r) idata->cov = covariance_calculate (cov); + if (idata->cov == NULL) + { + msg (MW, _("The dataset contains no complete observations. No analysis will be performed.")); + goto finish; + } + var_matrix = covariance_moments (cov, MOMENT_VARIANCE); mean_matrix = covariance_moments (cov, MOMENT_MEAN); idata->n = covariance_moments (cov, MOMENT_NONE);