'Join (horizontally) self.data and reduced_extra, taking the pairs
of rows given in indices'

def _join_table_by_indices(self, reduced_extra, indices):

    if (not len(indices)):
        return None
    domain = Orange.data.Domain(*((getattr(self.data.domain, x) + getattr(reduced_extra.domain, x)) for x in ('attributes', 'class_vars', 'metas')))
    X = self._join_array_by_indices(self.data.X, reduced_extra.X, indices)
    Y = self._join_array_by_indices(np.c_[self.data.Y], np.c_[reduced_extra.Y], indices)
    string_cols = [i for (i, var) in enumerate(domain.metas) if var.is_string]
    metas = self._join_array_by_indices(self.data.metas, reduced_extra.metas, indices, string_cols)
    return Orange.data.Table.from_numpy(domain, X, Y, metas)
