FACTOR: Do not try to run an analysis if no matrix is present
authorJohn Darrington <john@darrington.wattle.id.au>
Thu, 11 May 2017 11:48:31 +0000 (13:48 +0200)
committerJohn Darrington <john@darrington.wattle.id.au>
Thu, 11 May 2017 11:48:31 +0000 (13:48 +0200)
src/language/stats/factor.c

index bebc3959b0e3545164f7f43dd05df48e172e985c..49bc8a4d67f5334fa4af3737edd99b1d4c368acd 100644 (file)
@@ -1005,7 +1005,7 @@ iterate_factor_matrix (const gsl_matrix *r, gsl_vector *communalities, gsl_matri
 
 static bool run_factor (struct dataset *ds, const struct cmd_factor *factor);
 
-static void do_factor_by_matrix (const struct cmd_factor *factor, struct idata *idata);
+static bool do_factor_by_matrix (const struct cmd_factor *factor, struct idata *idata);
 
 
 
@@ -2221,9 +2221,15 @@ do_factor (const struct cmd_factor *factor, struct casereader *r)
   casereader_destroy (r);
 }
 
-static void
+static bool
 do_factor_by_matrix (const struct cmd_factor *factor, struct idata *idata)
 {
+  if (!idata->mm.cov && !idata->mm.corr)
+    {
+      msg (ME, _("The dataset has no complete covariance or correlation matrix."));
+      return false;
+    }
+
   if (idata->mm.cov && !idata->mm.corr)
     idata->mm.corr = correlation_from_covariance (idata->mm.cov, idata->mm.var_matrix);
   if (idata->mm.corr && !idata->mm.cov)