¿Cómo aplanar una lista a una lista sin coerción?
Estoy tratando de lograr la funcionalidad similar a unlist, con la excepción de que los tipos no están obligados a un vector, sino que se devuelve la lista con tipos preservados. Por ejemplo
flatten(list(NA, list("TRUE", list(FALSE), 0L))
debería regresar
list(NA, "TRUE", FALSE, 0L)
en lugar d
c(NA, "TRUE", "FALSE", "0")
que sería devuelto porunlist(list(list(NA, list("TRUE", list(FALSE), 0L))
.
Como se ve en el ejemplo anterior, el aplanamiento debe ser recursivo. ¿Existe una función en la biblioteca R estándar que logre esto, o al menos alguna otra función que pueda usarse para implementar esto de manera fácil y eficiente?
ACTUALIZA: No sé si está claro por lo anterior, pero las no listas no deben aplanarse, es decir,flatten(list(1:3, list(4, 5)))
debería devolverlist(c(1, 2, 3), 4, 5)
.