Hash o niveles respaldados por lista de un factor

Estoy tratando con una variable categórica recuperada de una base de datos y deseo utilizar factores para mantener la "plenitud" de los datos.

Por ejemplo, tengo una tabla que almacena colores y su ID numérico asociado

  ID  | Color
------+-------
    1 | Black
 1805 | Red
 3704 | White

Así que me gustaría usar un factor para almacenar esta información en un marco de datos como:

Car Model | Color
----------+-------
Civic     | Black
Accord    | White
Sentra    | Red

donde la columna de color es un factor y los datos subyacentes almacenados, en lugar de ser una cadena, en realidad son c (1, 3704, 1805) - a las ID asociadas con cada color.

e modo que puedo crear un factor personalizado modificando el atributo de niveles de un objeto de la clase de factor para lograr este efecto.

Desafortunadamente, como puede ver en el ejemplo, mis ID no se incrementan. En mi aplicación, tengo ~ 30 niveles y la ID máxima para un nivel es ~ 9,000. Debido a que los niveles se almacenan en una matriz por un factor, eso significa que estoy almacenando un vector entero de longitud 9,000 con solo 30 elementos en él.

¿Hay alguna forma de usar un hash o una lista para lograr este efecto de manera más eficiente? es decir, si tuviera que usar un hash en el atributo de niveles de un factor, podría almacenar los 30 elementos con los índices que desee sin tener que crear una matriz de tamaño máximo (ID).

¡Gracias por adelantado

Respuestas a la pregunta(4)

Su respuesta a la pregunta