回答:
a <- 1:120
b <- a[seq(1, length(a), 6)]
seq.int
はマイクロベンチマークでより高速ですが、実際のプログラムでのパフォーマンスの向上は、他の部分の実行時間によって小さくなります。
a = 1:120; b = [::6]
。Pythonは前者を実行できず、Rは後者を実行できません。
(すでに述べたseqソリューションを超えて)連続したピースを取得するためのもう1つのトリックは、短い論理ベクトルを使用し、ベクトルのリサイクルを使用することです。
foo[ c( rep(FALSE, 5), TRUE ) ]
seq
するにはlength
、ベクターを呼び出すことができる必要があります。letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
必ずしも同じではない2つのことを尋ねていると思います
オリジナルの6番目ごとの要素を抽出したい
これを行うには、シーケンスにインデックスを付けます。
foo <- 1:120
foo[1:20*6]
各要素が別のベクトルのi + 6番目の要素であるベクトルを作成したいと思います。
これを行う簡単な方法は、次の状態になるまで論理要素にFALSEを追加することi+6
です。
foo <- 1:120
i <- 1
foo[1:(i+6)==(i+6)]
[1] 7 14 21 28 35 42 49 56 63 70 77 84 91 98 105 112 119
i <- 10
foo[1:(i+6)==(i+6)]
[1] 16 32 48 64 80 96 112
foo[1:(i+6)!=(i+6)]
。つまり、6番目以外のすべての値を出力します。