Я пытаюсь реализовать функциональность, подобную unlist, за исключением того, что типы не привязаны к вектору, но вместо этого возвращается список с сохраненными типами. Например:
flatten(list(NA, list("TRUE", list(FALSE), 0L))
должен возвращать
list(NA, "TRUE", FALSE, 0L)
вместо
c(NA, "TRUE", "FALSE", "0")
который будет возвращен unlist(list(list(NA, list("TRUE", list(FALSE), 0L)).
Как видно из приведенного выше примера, уплощение должно быть рекурсивным. Есть ли функция в стандартной библиотеке R, которая достигает этого, или, по крайней мере, какая-то другая функция, которую можно легко и эффективно реализовать?
UPDATE: я не знаю, ясно ли из приведенного выше, но не-списки не должны быть сплющены, т.е. flatten(list(1:3, list(4, 5))) должен возвращать list(c(1, 2, 3), 4, 5).