"step11" = function(taxon.subset, dis.table) { all.genus1 <- substring(as.character(taxon.subset[, 4]), 1, regexpr("[^a-zA-Z]", as.character(taxon.subset[, 4])) - 1) print("inside step11") taxon <- unique(all.genus1) genus.medioids <- matrix(0, length(taxon), nrow(dis.table)) row.names(genus.medioids) <- taxon names(genus.medioids) <- dimnames(dis.table)[[2]] for(i in 1:length(taxon)) { x <- dis.table[all.genus1 == taxon[i], ] if(sum((all.genus1 == taxon[i]) * 1) > 1) { genus.medioids[i, ] <- apply(x, 2, mean) } if(sum((all.genus1 == taxon[i]) * 1) == 1) { genus.medioids[i, ] <- as.vector(x) } } genus.medioids2 <- matrix(0, length(taxon), length(taxon)) genus.medioids <- t(genus.medioids) for(i in 1:length(taxon)) { x <- genus.medioids[all.genus1 == taxon[i], ] if(sum((all.genus1 == taxon[i]) * 1) > 1) { genus.medioids2[i, ] <- apply(x, 2, mean) } if(sum((all.genus1 == taxon[i]) * 1) == 1) { genus.medioids2[i, ] <- as.vector(x) } } genus.medioids2 <- as.data.frame(genus.medioids2) row.names(genus.medioids2) <- taxon names(genus.medioids2) <- taxon x <- as.data.frame(genus.medioids2) genus.order <- as.vector(matrix(0, 1, nrow(x))) for(i in 1:(nrow(genus.medioids2) - 1)) { x <- x[dimnames(sort.col(x, "@END", "@ALL"))[[1]], dimnames(sort.col(x, "@END", "@ALL"))[[1]]] genus.order[i] <- as.character(row.names(x)[1]) x <- x[-1, -1] } genus.order <- unlist(genus.order) genus.order[nrow(genus.medioids2)] <- setdiff(dimnames(genus.medioids2)[[1]], genus.order) return(genus.medioids, genus.medioids2, genus.order) }