列表名称作为列表中的向量

时间:2012-12-05 17:00:11

标签: r list

从以下列表中获取最快捷的方法是什么:

 set.seed(1)
 mylist <- list(1:2,1:3,1:4)
 names(mylist) <- sample(LETTERS,3)

 mylist
$J
[1] 1 2

$V
[1] 1 2 3

$Z
[1] 1 2 3 4

到一个带有额外向量的列表,其中包含列表的名称,即

mylist
$J
[1] 1 2
[2] J J

$V
[1] 1 2 3
[2] V V V
$Z
[1] 1 2 3 4
[2] Z Z Z Z

结果同样可以是数据帧列表。某种

lapply(mylist, function(x) { data.frame(x=x,y=names(x)})

2 个答案:

答案 0 :(得分:10)

另一种选择:

df<-stack(mylist)
split(df, df$ind)

也许你真的需要stack(mylist)

答案 1 :(得分:4)

就个人而言,我喜欢@Matthew Plourde使用stack

这是一个使用mapply的选项,它保留了原始列表的相同结构

mapply(function(L, N) 
     {names(L) <- rep(N, length(L)); L},   mylist, names(mylist))

结果:

$G
G G 
1 2 

$J
J J J 
1 2 3 

$N
N N N N 
1 2 3 4