By using as.data.frame() is it easy if it works.
Example:
Input
d1<-list(A=c(1,2,3),B=c(4,5,6,7,8))
Output
A B
1 1 4
2 2 5
3 3 6
4 NA 7
5 NA 8
A and B are the colnames of the data.frame.
One possible case is sapply(d1, '[', seq(max(sapply(d1, length)))), but it's also complex.