Datos de muestra - debería hacer algo así en su pregunta para ilustrar:
> r1 = raster(matrix(sample(1:3,25,TRUE),5,5))
> r2 = raster(matrix(sample(1:3,25,TRUE),5,5))
La matriz de confusión de una trama es un error:
> confusionMatrix(r1,r2)
Error: `data` and `reference` should be factors with the same levels.
Por lo tanto, convertir a un factor con los mismos niveles :
> confusionMatrix(factor(r1[],levels=1:3),factor(r2[],levels=1:3))
Confusion Matrix and Statistics
Reference
Prediction 1 2 3
1 5 1 2
2 3 5 5
3 3 0 1
Entonces, si a uno de tus rásteres le faltan niveles, sigue funcionando:
> r3 = raster(matrix(1,5,5))
> confusionMatrix(factor(r1[],levels=1:3),factor(r3[],levels=1:3))
Confusion Matrix and Statistics
Reference
Prediction 1 2 3
1 8 0 0
2 13 0 0
3 4 0 0
La única condición en este caso es que hay que conocer de antemano todos los valores posibles. Si un "42" repentino se cuela en alguna parte, se romperá. Obtenga de antemano todos los valores únicos en sus rasters y luego cree factores con eso.