Функция relist()
(по умолчанию) не переопределяет список, если список не был свернут рекурсивно. Например,
> my_list=list(a=list(aa=c(1,2),ab=2),b=list(ba=1,bb=2))
> flat=unlist(as.relistable(my_list),recursive=FALSE)
Warning message:
In unlist.relistable(x, recursive, use.names) :
relist() requires recursively unlisted objects.
>relist(flat)
$a
$a$aa
$a$aa[[1]]
[1] 1 2
$a$aa[[2]]
[1] 2
$a$ab
$a$ab[[1]]
[1] 1
$b
$b$ba
$b$ba[[1]]
[1] 2
$b$bb
$b$bb[[1]]
NULL
Я дал частичный ответ и, похоже, работает, но есть ли лучший и полный способ сделать это?