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

103

这个向量是这样的:

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
2个回答

145

简单,只需要这样做:

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

FYI:它似乎忽略了as.list(c(0, NULL,1))中的NULL值。 - Oleg Melnikov
1
@OlegMelnikov 如果你想要的是传递空值,你不能将NULL传递给向量c(),你可以传递NA - Matt W.

12

对已有答案的一个补充:如果你想将向量添加到更长列表中的其他元素中,使用as.list()可能不会产生您期望的结果。例如:您想添加2个文本元素和一个包含五个数字元素(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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接