1

次のリストから取得する最も簡単な方法は何ですか。

 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)})
4

2 に答える 2

10

別のオプション:

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

多分stack(mylist)あなたが本当に必要としているのはそれだけですか?

于 2012-12-05T17:13:18.917 に答える
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 
于 2012-12-05T17:07:19.517 に答える