web-dev-qa-db-ja.com

ベクトルのn番目の要素をすべて抽出する

各要素が別のベクターのi+6th要素であるベクターを作成したいと思います。

たとえば、長さ120のベクトルでは、各要素が初期ベクトルの値i, i+6, i+12, i+18...である長さ20の別のベクトルを作成します。つまり、元の6番目ごとの要素を抽出します。

115
RodgerDodger
a <- 1:120
b <- a[seq(1, length(a), 6)]
140
nico

シーケンシャルピースを取得するためのもう1つのトリック(既に説明したseqソリューション以外)は、短い論理ベクトルを使用し、ベクトルリサイクルを使用することです。

foo[ c( rep(FALSE, 5), TRUE ) ]
38
Greg Snow

必ずしも同じではない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
23
Sacha Epskamp

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
0
user5783745