各要素が別のベクターのi+6th
要素であるベクターを作成したいと思います。
たとえば、長さ120のベクトルでは、各要素が初期ベクトルの値i, i+6, i+12, i+18...
である長さ20の別のベクトルを作成します。つまり、元の6番目ごとの要素を抽出します。
a <- 1:120
b <- a[seq(1, length(a), 6)]
シーケンシャルピースを取得するためのもう1つのトリック(既に説明したseqソリューション以外)は、短い論理ベクトルを使用し、ベクトルリサイクルを使用することです。
foo[ c( rep(FALSE, 5), TRUE ) ]
必ずしも同じではない2つのことを尋ねていると思います
オリジナルの6番目の要素ごとに抽出したい
これを行うには、シーケンスにインデックスを付けます。
foo <- 1:120
foo[1:20*6]
各要素が別のベクトルのi + 6番目の要素であるベクトルを作成したいと思います。
これを行う簡単な方法は、i+6
まで論理要素にFALSEを追加することです。
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
anyの開始位置からn番目ごとに要素を選択するには
nth_element <- function(vector, starting_position, n) {
vector[seq(starting_position, length(vector), n)]
}
# E.g.
vec <- 1:12
nth_element(vec, 1, 3)
# [1] 1 4 7 10
nth_element(vec, 2, 3)
# [1] 2 5 8 11