2017-10-28 15 views
1

ベクトルのリストが与えられたら、どのようにして新しいリストを作成し、それをベクトルのインデックスで埋めることができますか?例えば、私はRベクトルをインデックス別に平坦化する(ループなし)

list(c(1), c(1,1,1), c(1,1)) 

は、C(1)(インデックス1)、Cのための3つの2秒間ので

list(1, 2, 2, 2, 3, 3) 

1 1に変身する必要があります(1,1,1)(インデックス2) 、c(1,1)の3つの3つ(インデックス3)。 ループなしでこれを行うことは可能ですか?ありがとう。

答えて

4

使用rep + seq_along + lengths

rep(seq_along(lst), lengths(lst)) 
# [1] 1 2 2 2 3 3 

seq_alongがインデックスを与える:

seq_along(lst) 
# [1] 1 2 3 

lengthsは、各インデックスの繰り返しを与える:

lengths(lst) 
# [1] 1 3 2 
+0

これは完全に動作します - 私はrep()とlengths()関数が存在することに気づいていませんでした。ありがとう! –

関連する問題