}
long *n = gsl_vector_long_ptr (kmeans->num_elements_groups, group);
- *n += qc->wv ? case_data (c, qc->wv)->f : 1.0;
+ *n += qc->wv ? case_num (c, qc->wv) : 1.0;
kmeans->n++;
for (j = 0; j < qc->n_vars; ++j)
if (var_is_value_missing (qc->vars[j], val, qc->exclude))
continue;
double *x = gsl_matrix_ptr (kmeans->updated_centers, group, j);
- *x += val->f * (qc->wv ? case_data (c, qc->wv)->f : 1.0);
+ *x += val->f * (qc->wv ? case_num (c, qc->wv) : 1.0);
}
}
}
long *n = gsl_vector_long_ptr (kmeans->num_elements_groups, group);
- *n += qc->wv ? case_data (c, qc->wv)->f : 1.0;
+ *n += qc->wv ? case_num (c, qc->wv) : 1.0;
kmeans->n++;
}
casereader_destroy (cs);
/* A transformation function which juxtaposes the dataset with the
(pre-prepared) dataset containing membership and/or distance
values. */
-static int
+static enum trns_result
save_trans_func (void *aux, struct ccase **c, casenumber x UNUSED)
{
const struct save_trans_data *std = aux;
*c = case_unshare (*c);
if (std->CASE_IDX_MEMBERSHIP >= 0)
- case_data_rw (*c, std->membership)->f = case_data_idx (ca, std->CASE_IDX_MEMBERSHIP)->f;
+ *case_num_rw (*c, std->membership) = case_num_idx (ca, std->CASE_IDX_MEMBERSHIP);
if (std->CASE_IDX_DISTANCE >= 0)
- case_data_rw (*c, std->distance)->f = case_data_idx (ca, std->CASE_IDX_DISTANCE)->f;
+ *case_num_rw (*c, std->distance) = case_num_idx (ca, std->CASE_IDX_DISTANCE);
case_unref (ca);
/* Calculate the membership and distance values. */
struct ccase *outc = case_create (proto);
if (qc->save_values & SAVE_MEMBERSHIP)
- case_data_rw_idx (outc, qc->save_trans_data->CASE_IDX_MEMBERSHIP)->f = cluster + 1;
+ *case_num_rw_idx (outc, qc->save_trans_data->CASE_IDX_MEMBERSHIP) = cluster + 1;
if (qc->save_values & SAVE_DISTANCE)
- case_data_rw_idx (outc, qc->save_trans_data->CASE_IDX_DISTANCE)->f
+ *case_num_rw_idx (outc, qc->save_trans_data->CASE_IDX_DISTANCE)
= sqrt (dist_from_case (kmeans, c, qc, clust));
casewriter_write (qc->save_trans_data->writer, outc);
std->distance = dict_create_var_assert (qc.dict, qc.var_distance, 0);
}
- add_transformation (qc.dataset, save_trans_func, save_trans_destroy, std);
+ static const struct trns_class trns_class = {
+ .name = "QUICK CLUSTER",
+ .execute = save_trans_func,
+ .destroy = save_trans_destroy,
+ };
+ add_transformation (qc.dataset, &trns_class, std);
}
free (qc.var_distance);