私は次のような行列を持っています
[,1] [,2]
[1,] 1 3
[2,] 4 6
[3,] 11 12
[4,] 13 14
この行列を次のようなベクトルに変換したい:
# indices 1-6, 11-14 = 1, gap indices 7-10 = 0
xx <- c(1,1,1,1,1,1,0,0,0,0,1,1,1,1)
アイデア: マトリックスには 1 から 14 までの値があります。また、ベクトルの長さも 14 です。最初の列が開始点で、2 番目の列が終了点であると仮定すると、マトリックスに存在する範囲について、つまり、1 ~ 3、4 ~ 6、11 ~ 12、13 ~ 4 (または同等の 1 ~ 6、11 ~ 14)、出力ベクトルでこれらのインデックスの値を 1 にします。また、マトリックスの 7 ~ 10 のギャップは、出力ベクトルのインデックス 7 ~ 10 で値が 0 になるはずです。(編集ありがとうございます)
ただし、行列が行列の最後の値を示さない場合があります。ただし、変換後のサイズは常にわかっています。たとえば、この場合は 20 です。その後、結果のベクトルは次のようになります。
# indices 1-6, 11-14 = 1, gap indices 7-10 = 0, indices 15-20 = 0
xx <- c(1,1,1,1,1,1,0,0,0,0,1,1,1,1,0,0,0,0,0,0)
どうすればループなしでそれを行うことができますか? 私の行列はかなり長いので、ループを使ってみましたが遅いです。