Eu gostaria de criar um vetor no qual cada elemento é o i+6th
elemento de outro vetor.
Por exemplo, em um vetor de comprimento 120, quero criar outro vetor de comprimento 20, no qual cada elemento é o valor i, i+6, i+12, i+18...
do vetor inicial, ou seja, quero extrair cada sexto elemento do original.
seq.int
é mais rápido nas marcas de microbench , mas suspeito que qualquer aumento de desempenho em um programa real seja diminuído pelo tempo de execução de outras partes.a = 1:120; b = [::6]
. Python não pode fazer o primeiro, R não o último.Outro truque para obter peças seqüenciais (além da solução seq já mencionada) é usar um vetor lógico curto e usar a reciclagem de vetores:
fonte
seq
você tem que poder ligarlength
o vetor.letters[letters < 'm'][c(TRUE, FALSE, FALSE)]
Eu acho que você está perguntando duas coisas que não são necessariamente iguais
Você pode fazer isso indexando uma sequência:
Uma maneira fácil de fazer isso é suplementar um fator lógico com FALSEs até
i+6
:fonte
foo[1:(i+6)!=(i+6)]
ou seja , produza todos os valores, exceto o sexto.Para selecionar cada enésimo elemento de qualquer posição inicial no vetor
fonte