Dividindo uma lista com base em outros valores de lista no Mathematica

No Mathematica, eu tenho uma lista de coordenadas de pontos

size = 50;
points = Table[{RandomInteger[{0, size}], RandomInteger[{0, size}]}, {i, 1, n}];

e uma lista de índices de cluster a esses pontos pertencem

clusterIndices = {1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1};

qual é a maneira mais fácil de dividir os pontos em duas listas separadas com base nos valores clusterIndices?

EDIT: A solução que eu vim com:

pointIndices =
  Map[#[[2]] &,
    GatherBy[MapIndexed[{#1, #2[[1]]} &, clusterIndices], First],
    {2}];
pointsByCluster = Map[Part[points, #] &, pointIndices];

Existe uma maneira melhor de fazer isso?

questionAnswers(6)

yourAnswerToTheQuestion