Convertir un vecteur en liste, chaque élément du vecteur en tant qu'élément de la liste

91

Le vecteur est comme ceci:

c(1,2,3)
#[1] 1 2 3

J'ai besoin de quelque chose comme ça:

list(1,2,3)
#[[1]]
#[1] 1
#
#[[2]]
#[1] 2
#
#[[3]]
#[1] 3

J'ai essayé ceci:

list(c(1,2,3))
#[[1]]
#[1] 1 2 3
qed
la source

Réponses:

125

Simple, faites ceci:

as.list(c(1,2,3))
qed
la source
FYI: Il semble ignorer les valeurs NULL dans as.list(c(0, NULL,1)).
Oleg Melnikov
1
@OlegMelnikov vous ne pouvez pas passer NULLdans un vecteur c(), vous pouvez passer NAsi c'est ce que vous recherchez.
Matt W.
4

Un ajout à la réponse acceptée: si vous voulez ajouter un vecteur à d'autres éléments dans une liste plus longue, as.list () peut ne pas produire ce que vous attendez. Par exemple: vous voulez ajouter 2 éléments de texte et un vecteur de cinq éléments numériques (1: 5), pour faire une liste de 7 éléments.

L<-list("a","b",as.list(1:5)) 

Oups: il renvoie une liste avec 3 éléments, et le troisième élément a une sous-liste de 5 éléments; pas ce que nous voulions! La solution est de joindre deux listes distinctes:

L1<-list("a","b")
L2<-as.list(1:5)
L<-c(L1,L2) #7 elements, as expected
John
la source