R: Utilidad de un bucle for en este caso?

Me piden que calcule una fracción que como resultado final dará la probabilidad de encontrar missings en mi df. Ya tengo el numerador y el denominador es "longitud total de la serie", que significa número de meses que una unidad ha estado en muestra. Me dicen que esa longitud se calcula de la siguiente manera:

ID_VariableAuxiliar=unique(df$ID)

for (i in 1:length(ID_VariableAuxiliar)){
  longitud=length(df$ID==ID_VariableAuxiliar(i))}

for (i in 1:length(df)){
  k=which(ID_VariableAuxiliar==df$ID(i))
  df$fraccion(i)=df$numerador(i)/longitud(k)}

¿Alguien puede explicarme el procedimiento y por qué no funciona cuando pongo "longitud(k)" como denominador? El error que me da R es:

Error in `$<-.data.frame`(`*tmp*`, fraccion, value = numeric(0)) : 
  replacement has 0 rows, data has 25300