Dear All,
 
I am using Silhouette to estimate the number of clusters in a microarray
dataset.
 
Initially, I used the iris data to test my piece of code as follows:
 
library(cluster)
data(iris)
mydata<-iris[,1:4]
maxk<-15                    # at most 15 clusters
myindex<-rep(0,maxk)  # hold the si values for each k clusters
mdist<-1-cor(t(mydata)) #dissimlarity
mdist<-as.dist(mdist)
for(k in 2:maxk)
{     
 hc<-diana(mdist,diss =TRUE, stand = FALSE)     
 si<-silhouette.default(cutree(as.hclust(hc),k=k),mdist)
 myindex<-summary(si)$avg.width
}
myk<-rev(order(myindex))[1]  #select the number of k clusters with the 
                                           #largest si value
 
I met the following problems:
 
> for(k in 2:maxk)
+ {     
+  hc<-diana(mdist,diss =TRUE, stand = FALSE)     
+  si<-silhouette.default(cutree(as.hclust(hc),k=k),mdist)
+  myindex<-summary(si)$avg.width
+ }
Error in "[<-"(*tmp*, iC, "sil_width", value = s.i) : 
        number of items to replace is not a multiple of replacement length
In addition: Warning messages: 
1: longer object length
        is not a multiple of shorter object length in: b.i - a.i 
2: number of rows of result
        is not a multiple of vector length (arg 2) in: cbind(mmm, as.vector(each)) 

Could any one help me how I can solve the problems???
 
Your kind help is highly appreciated!!
 
ping

 



---------------------------------
Post your free ad now! Yahoo! Canada Personals

	[[alternate HTML version deleted]]


