3

与えられたリスト(a)とaと同じ長さの数値ベクトル(b):

a <- list(1, c(3, 7), 5)
b <- c(1,1,2)

長さmax(b)の新しいリストを作成する方法。ここで、aのすべての要素がbに従って対応するインデックスに配置され、複数回発生した場合に結合されるため、次のようになります。

[[1]]
[1] 1 3 7

[[2]]
[1] 5

私のデータの次元は非常に大きくなる傾向があるので、これはうまくいけば非常に効率的に(ループなしで)行われるべきです...

私が考えていなかった明らかな解決策があると確信しています...

助けてくれてありがとう

4

2 に答える 2

5

どうですか:

split(unlist(a), rep(b, sapply(a, length)))
$`1`
[1] 1 3 7

$`2`
[1] 5
于 2012-07-06T07:04:17.090 に答える
3

これが別の方法です

> lapply(split(a, b), unlist)
$`1`
[1] 1 3 7

$`2`
[1] 5
于 2012-07-06T08:51:04.947 に答える