提取向量的每个第n个元素

Rod*_*ger 114 r vector

我想创建一个向量,其中每个元素是i+6th另一个向量的元素.

例如,在长度为120的向量中,我想创建另一个长度为20的向量,其中每个元素是i, i+6, i+12, i+18...初始向量的值,即我想要提取原始的每个第6个元素.

nic*_*ico 143

a <- 1:120
b <- a[seq(1, length(a), 6)]
Run Code Online (Sandbox Code Playgroud)

  • 最好使用seq.int(1L,length(a),6L),至少对于长向量 (8认同)

Gre*_*now 40

获取连续片段的另一个技巧(超出已提到的seq解决方案)是使用短逻辑向量并使用向量回收:

foo[ c( rep(FALSE, 5), TRUE ) ]
Run Code Online (Sandbox Code Playgroud)

  • 这种方法的优点是可以临时使用。为了使用`seq`,您必须能够在向量上调用`length`。`letters [letters &lt;'m'] [c(TRUE,FALSE,FALSE)]` (2认同)

Sac*_*amp 23

我想你问两件不一定相同的东西

我想提取原始的每个第6个元素

您可以通过索引序列来完成此操作:

foo <- 1:120
foo[1:20*6]
Run Code Online (Sandbox Code Playgroud)

我想创建一个向量,其中每个元素是另一个向量的第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
Run Code Online (Sandbox Code Playgroud)