从以下列表中获取最快捷的方法是什么:
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)})
答案 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