Convertir lista a marco de datos manteniendo nombres de elementos de lista

Tengo una lista donde los nombres de los elementos son etiquetas ID y contiene un vector con valores numéricos. Estos son de longitud desigual (!).

Quiero transformarlo en un marco de datos donde tengo el ID en una columna y los valores numéricos en otra columna. P.ej.:

$`1`  
[1] 1 2   
$`2`  
[1] 1 2 3 
$`3`  
[1] 1   

A:

ID   Obs  
1    1  
1    2
2    1
2    2
2    3
3    1