You can try the code below
data.frame(t(sapply(lst,`length<-`,max(lengths(lst)))))
or
data.frame(do.call(rbind,lapply(lst,`length<-`,max(lengths(lst)))))
giving
X1 X2 X3
1 1 NA NA
2 2 3 4
3 5 6 NA
Data
lst <- list(1, 2:4, 5:6)
Update
It seems you have NULL
in lst
. In this case, you can try the code below
data.frame(do.call(rbind,lapply(replace(lst,!lengths(lst),NA),`length<-`,max(lengths(lst)))))
or
data.frame(t(sapply(replace(lst,!lengths(lst),NA),`length<-`,max(lengths(lst)))))
Example
Given lst
as
lst <- list(1,2:4,5:6,NULL,1:4)
> lst
[[1]]
[1] 1
[[2]]
[1] 2 3 4
[[3]]
[1] 5 6
[[4]]
NULL
[[5]]
[1] 1 2 3 4
we will get
> data.frame(do.call(rbind,lapply(replace(lst,!lengths(lst),NA),`length<-`,max(lengths(lst)))))
X1 X2 X3 X4
1 1 NA NA NA
2 2 3 4 NA
3 5 6 NA NA
4 NA NA NA NA
5 1 2 3 4
> data.frame(t(sapply(replace(lst,!lengths(lst),NA),`length<-`,max(lengths(lst)))))
X1 X2 X3 X4
1 1 NA NA NA
2 2 3 4 NA
3 5 6 NA NA
4 NA NA NA NA
5 1 2 3 4