Converta um vetor em uma lista, cada elemento do vetor como um elemento da lista

91

O vetor é assim:

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

Eu preciso de algo assim:

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

Eu tentei isso:

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

Respostas:

125

Simples, basta fazer isso:

as.list(c(1,2,3))
qed
fonte
Para sua informação: Parece ignorar os valores NULL em as.list(c(0, NULL,1)).
Oleg Melnikov
1
@OlegMelnikov você não pode passar NULLpara um vetor c(), você pode passar NAse é isso que você está procurando.
Matt W.
4

Uma adição à resposta aceita: se você quiser adicionar um vetor a outros elementos em uma lista mais longa, as.list () pode não produzir o que você espera. Por exemplo: você deseja adicionar 2 elementos de texto e um vetor de cinco elementos numéricos (1: 5), para fazer uma lista de 7 elementos.

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

Ops: ele retorna uma lista com 3 elementos, e o terceiro elemento tem uma sub-lista de 5 elementos; não o que queríamos! A solução é juntar duas listas separadas:

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