(defn myswap [l Dl] (let [unique-l (uc (to-vect Dl)) swap-l (fn [item] (let [new-unique-l (remove #(= % item) unique-l) new-item (if (= (count new-unique-l) 1) (first new-unique-l) (first (shuffle new-unique-l)))] new-item))] (matrix (map #(swap-l %) l)))) (defn swap-class [D] (let [att (sel D :cols (range 0 (- (ncol D) 1))) klass (sel D :cols (- (ncol D) 1)) klass10 (matrix (take (* 0.1 (nrow klass)) klass)) klass90 (matrix (drop (* 0.1 (nrow klass)) klass)) klass-new (bind-rows (myswap klass10 klass) klass90)] (bind-columns att klass-new)))