Contraer vector a cadena de caracteres con números respectivos de apariciones consecuentes

Me gustaría contraer un vector CIGAR a una cadena CIGAR. Por CIGAR vector a String me refiero a lo siguiente:

Quiero una función que convierta:

cigar.vector = c("M", "M", "I", "I", "M", "I", "", "M", "D", "D", "M", "I", "D", "M", "I")

a esto:

cigar.string = "2M2I1M1I1M2D1M1I1D1M1I"

y viceversa.

Tenga en cuenta que hay un "" (carácter vacío), que no cuenta. ¡Gracias!

Respuestas a la pregunta(1)

Su respuesta a la pregunta