choose residual variable names correctly
authorJason Stover <jhs@math.gcsu.edu>
Fri, 21 Apr 2006 20:48:56 +0000 (20:48 +0000)
committerJason Stover <jhs@math.gcsu.edu>
Fri, 21 Apr 2006 20:48:56 +0000 (20:48 +0000)
src/language/stats/ChangeLog
src/language/stats/regression.q

index 300a930292690eaadd7b439712a17eb4173cfadd..8d6066ffd6a1d0f9c013f45be3ba8cc2c314f9bc 100644 (file)
@@ -1,3 +1,11 @@
+2006-04-21  Jason Stover  <jhs@math.gcsu.edu>
+
+       * regression.q (try_name): New function. (Partly copied from
+       try_name in descriptives.c.)
+
+       * regression.q (subcommand_save): Choose residual variable names
+       correctly. 
+
 2006-04-20  Jason Stover  <jhs@math.gcsu.edu>
 
        * regression.q (cmd_regression): Moved call to subcommand_save()
index 8103d914638e7abe0a3a2df48ecf913215faa1ab..34aef922a17ee50b0cc1f08444db5815150ce5cf 100644 (file)
@@ -549,9 +549,23 @@ regression_trns_proc (void *m, struct ccase *c, int case_idx UNUSED)
   free (vals);
   return TRNS_CONTINUE;
 }
+/* 
+   Returns 0 if NAME is a duplicate of any existing variable name.
+*/
+static int
+try_name (char *name)
+{
+  if (dict_lookup_var (default_dict, name) != NULL)
+    return 0;
+
+  return 1;
+}
+
 static void
 subcommand_save (int save, pspp_linreg_cache **models)
 {
+  int i;
+  char name[LONG_NAME_LEN + 1];
   struct variable *residuals = NULL;
   pspp_linreg_cache **lc;
 
@@ -559,11 +573,18 @@ subcommand_save (int save, pspp_linreg_cache **models)
 
   if (save)
     {
+      i = 1;
+      snprintf (name, LONG_NAME_LEN, "RES%d", i);
       for (lc = models; lc < models + cmd.n_dependent; lc++)
        {
          assert (*lc != NULL);
          assert ((*lc)->depvar != NULL);
-         residuals = dict_create_var (default_dict, "residuals", 0);
+         while (!try_name (name))
+           {
+             i++;
+             snprintf (name, LONG_NAME_LEN, "RES%d", i);
+           }
+         residuals = dict_create_var (default_dict, name, 0);
          assert (residuals != NULL);
          (*lc)->resid = residuals;
          add_transformation (regression_trns_proc, pspp_linreg_cache_free, *lc);