Enfoque simple para asignar clústeres para nuevos datos después del agrupamiento de k-means

Estoy ejecutando k-means clustering en un marco de datos df1, y estoy buscando un método simple para calcular el centro de clúster más cercano para cada observación en un nuevo marco de datos df2 (con los mismos nombres de variable). Piense en df1 como el conjunto de entrenamiento y df2 en el conjunto de pruebas; Quiero agrupar en el conjunto de entrenamiento y asignar cada punto de prueba al grupo correcto.

Sé cómo hacer esto con elapply y algunas funciones simples definidas por el usuario (las publicaciones anteriores sobre el tema generalmente han propuesto algo similar):

df1 <- data.frame(x=runif(100), y=runif(100))
df2 <- data.frame(x=runif(100), y=runif(100))
km <- kmeans(df1, centers=3)
closest.cluster <- function(x) {
  cluster.dist <- apply(km$centers, 1, function(y) sqrt(sum((x-y)^2)))
  return(which.min(cluster.dist)[1])
}
clusters2 <- apply(df2, 1, closest.cluster)

Sin embargo, estoy preparando este ejemplo de agrupación para un curso en el que los estudiantes no estarán familiarizados con elapply función, por lo que preferiría mucho si pudiera asignar los clústeres a df2 con una función incorporada. ¿Existen funciones incorporadas convenientes para encontrar el clúster más cercano?

Respuestas a la pregunta(2)

Su respuesta a la pregunta