# Shorthand: map 1->1, 2->2, 3->3, 4->1, ..., 149->2, 150->3, ... (is base==3) I = function(i, base) (i-1) %% base + 1 # Compute the sum of (normalized) sum of squares of closest distances to a medoid. # Note: medoids can be a big.matrix computeDistortion = function(series, medoids) { if (bigmemory::is.big.matrix(medoids)) medoids = medoids[,] #extract standard matrix n = nrow(series) ; L = ncol(series) distortion = 0. for (i in seq_len(n)) distortion = distortion + min( colSums( sweep(medoids,1,series[,i],'-')^2 ) / L ) distortion / n }