Answers:
a <- 1:120
b <- a[seq(1, length(a), 6)]
seq.int
在微基准测试中速度更快,但是我怀疑实际程序中任何性能的提高都将与其他部分的运行时间相形见war 。
a = 1:120; b = [::6]
。Python不能做前者,R不能做后者。
获取序列片段的另一个技巧(除了已经提到的seq解决方案之外)是使用短逻辑向量并使用向量循环:
foo[ c( rep(FALSE, 5), TRUE ) ]
seq
您必须能够调用length
引导程序。letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
我想你问的是两个不一定相同的事情
我想提取原始的每6个元素
您可以通过索引序列来做到这一点:
foo <- 1:120
foo[1:20*6]
我想创建一个向量,其中每个元素是另一个向量的第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
foo[1:(i+6)!=(i+6)]
即输出除第六个值以外的所有值。