从R中的三个向量创建一个命名列表列表

时间:2014-08-06 09:29:57

标签: r

我试图将三个向量组合成一个列表列表,其中一个向量是列表的索引。

鉴于

names<-c("a","b","c","d")
id1<-c(1,1,2,2)
id2<-c(3,4,5,6)

我想建立一个如下所示的列表:

mylist <- list("a" = list(1,3), "b" = list(1,4), "c" = list(2,5), "d" = list(2,6))

2 个答案:

答案 0 :(得分:5)

我认为您正在寻找Map

l <- Map(list, id1, id2) # thanks to @thelatemail for suggested improvement
names(l) <- names
identical(mylist, l)
# TRUE

答案 1 :(得分:4)

您可以使用mapplyc函数执行此操作,以逐元素连接向量。 setNames在函数返回时方便地命名结果:

ll <- setNames( mapply( c , id1 , id2 , SIMPLIFY = FALSE ) , names )

#$a
#[1] 1 3

#$b
#[1] 1 4

#$c
#[1] 2 5

#$d
#[1] 2 6

或者可能利用mapply()&#39; USE.NAMES参数您可以命名第一个向量来执行此操作,在没有setNames的情况下实现相同的结果:

names(id1) <- names
mapply( c , id1 , id2 , SIMPLIFY = FALSE )