¿Cuál es una manera eficiente de convertir una lista de elementos en una lista de listas con un solo elemento en cada lista? Ver datos de ejemplo a continuación:

#This vector (but with many more elements) I'd like to turn into a list of list with one element in each. 
vector <- c("element1", "element2", "element3")

# It should look like this: 
list_vector <- list("element1", "element2", "element3")

#This is old: and not really how I want it: 
 
 list_vector <- list(list("element1"), list("element1"), list("element1"))

Gracias de antemano

r
1
Gorp 24 jun. 2020 a las 14:05

2 respuestas

La mejor respuesta

Podrías usar

lapply(vector,list)

Editar: para la nueva salida deseada

sapply(vector,list)
1
Daniel O 24 jun. 2020 a las 11:20

Como su list_vector es un sin nombre list, puede usar as.list, lapply o sapply para girar cada elemento de un vector en una lista con solo un elemento en cada uno . Usar as.list será la forma más eficiente .

x <- as.list(vector)
y <- lapply(vector, identity)
z <- unname(sapply(vector,list))

Prueba de igualdad:

identical(x, list_vector)
[1] TRUE
identical(y, list_vector)
[1] TRUE
identical(z, list_vector)
[1] TRUE
0
GKi 24 jun. 2020 a las 12:26