将向量转换为列表,向量中的每个元素作为列表中的元素


91

向量是这样的:

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

我需要这样的东西:

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

我尝试了这个:

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

Answers:


125

很简单,只需执行以下操作:

as.list(c(1,2,3))

仅供参考:似乎忽略中的NULL值as.list(c(0, NULL,1))
奥列格·梅尔尼科夫

1
@OlegMelnikov您不能传递NULL给向量c()NA如果您正在寻找的话就可以通过。
马特W.

4

可接受的答案的补充:如果要将向量添加到较长列表中的其他元素,则as.list()可能不会产生您期望的结果。例如:您要添加2个文本元素和5个数字元素(1:5)的向量,以构成一个7个元素长的列表。

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

糟糕:它返回一个包含3个元素的列表,第三个元素包含5个元素的子列表;不是我们想要的!解决方案是加入两个单独的列表:

L1<-list("a","b")
L2<-as.list(1:5)
L<-c(L1,L2) #7 elements, as expected
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.