提取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]