Будет ли это работать так?
lapply(l, function(li)
data.frame(lapply(li,'length<-',max(lengths(li)))))
# [[1]]
# power.def_1 power.def_2 power.def_3 power.def_4
# 1 ability brawn ascendancy authority
# 2 capability energy authority authorization
# 3 capacity force bottom licence
# 4 competence forcefulness command prerogative
# 5 competency intensity control privilege
# 6 faculty might dominance right
# 7 potential muscle domination warrant
# 8 <NA> potency dominion <NA>
# 9 <NA> strength influence <NA>
# 10 <NA> vigour mastery <NA>
# 11 <NA> weight rule <NA>
# 12 <NA> <NA> sovereignty <NA>
# 13 <NA> <NA> supremacy <NA>
# 14 <NA> <NA> sway <NA>
...
Более компактный, используя purrr
:
library(purrr)
map(l,~map_dfc(.,`length<-`,max(lengths(.))))
Данные
l1 <- structure(list(power.def_1 = c("ability", "capability", "capacity",
"competence", "competency", "faculty", "potential"), power.def_2 = c("brawn",
"energy", "force", "forcefulness", "intensity", "might", "muscle",
"potency", "strength", "vigour", "weight"), power.def_3 = c("ascendancy",
"authority", "bottom", "command", "control", "dominance", "domination",
"dominion", "influence", "mastery", "rule", "sovereignty", "supremacy",
"sway"), power.def_4 = c("authority", "authorization", "licence",
"prerogative", "privilege", "right", "warrant")), .Names = c("power.def_1",
"power.def_2", "power.def_3", "power.def_4"))
l <- list(l1,l1)