R cumunique como cumsum [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Número acumulado de valores únicos en una columna hasta la fila actual 2 respuestas

Me gustaría una función que funcione equivalente a cumsum pero en lugar de sumar cuenta el número de valores únicos hasta ahora. Podría escribir un bucle para cada conjunto potencial, pero parece que podría llevar mucho tiempo ya que mi conjunto de datos tiene millones de observaciones.

Ejemplo:

a <- c(1,3,2,4,1,5,2,3)
f(a)
[1] 1 2 3 4 4 5 5 5