Я пытаюсь реализовать функциональность, подобную 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)
.