提取vector的每个第n个元素

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

 a <- 1:120 b <- a[seq(1, length(a), 6)] 

另一个获得连续碎片的技巧(除了已经提到的seq解决scheme之外)是使用一个短逻辑向量并使用向量回收:

 foo[ c( rep(FALSE,5), TRUE ) ] 

我想你是在问两个不一定相同的东西

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

你可以通过索引一个序列来做到这一点:

 foo <- 1:120 foo[1:20*6] 

我想创build一个向量,其中每个元素是另一个向量的第i + 6个元素。

一个简单的方法来做到这一点是补充一个逻辑因素与FALSEs,直到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 

在阅读上面的指南之后,一般我们可以这样说:select每个第n个元素,比如说向量y中的第20个元素如下:

 Ycorrected<-Y[rep(c(rep(F,19),T),trunc(length(Y)/20))] Ycorrected<-Y[1:(trunc(length(Y)/20))*20] Ycorrected<-Y[seq(20,(trunc(length(Y)/20))*20),by=20]