Dear R users


I have the matrix of the centres of some clusters, e.g. 20 clusters each
with 100 dimentions, so this matrix contains 20 rows * 100 columns numeric
values.

I have collected new data (each with 100 numeric values) and would like to
keep the above 20 centres fixed/'unmoved' whilst just see how my new data
fit in this grouping system, e.g. if the data is close to cluster 1 than
lable it 'cluster 1'.

If the above matrix of centre is called 'Centre' (a 20*100 matrix) and my
new data 'NewData' has 500 observations, by using kmeans() will update the
centres:

kmeans(NewData, Centre)


I wondered if there is other R packages out there can keep the centres
fixed and lable each observations of my new data? Or I have to write my own
function?

To illustrate my task using a simpler example:

I have

Centre<- matrix(c(0,1,0,1), nrow=2)

# the two created centres in a two dimentional case are
Centre
     [,1] [,2]
[1,]    0    0
[2,]    1    1

NewData<-rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
            matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))

 NewData1<-cbind(c1:100), NewData)
colnames(NewData1)<-c("ID","x","y")

# my data
 head(NewData1)
     ID          x          y
[1,]  1 -0.3974660  0.1541685
[2,]  2  0.5321347  0.2497867
[3,]  3  0.2550276  0.1691720
[4,]  4 -0.1162162  0.6754874
[5,]  5  0.1570996  0.1175119
[6,]  6  0.4816195 -0.6836226

## I'd like to have outcome as below (whilst keep the tow centers fixed):

           ID        x             y                      Cluster
[1,] 1       -0.3974660 0.1541685             1
[2,] 2        0.5321347 0.2497867             1
[3,] 3        0.2550276 0.1691720             1
[4,] 4       -0.1162162 0.6754874             1

...
[55,]  55         1.1570996  1.1175119         2
[56,]  56         1.4816195  1.6836226         2


p.s. I use Euclidian to obtain/calculate distance matrix.


Many thanks in advance

HJ

	[[alternative HTML version deleted]]

