Como usar laços com índices em r

Video: Como usar laços no cabelo / Penteado simples com laços

Usando loops em R é muito útil, mas você pode escrever código mais eficiente se você loop não sobre os valores, mas ao longo dos índices. Para fazer isso, você substituir a parte do meio na função com o seguinte código:

nclient lt; - comprimento (cliente) IVA lt; - numérico (nclient) para (i em seq_along (cliente)) {IVA [i] lt; - switch (cliente [i], privado = 1,12, public = 1,06, 1))}

Aqui estão algumas diferenças de usar valores do vector de looping:

  • Você atribui o comprimento do vector cliente para a variável nclient.

    Video: DIY: Aprenda a fazer 5 Chokers GASTANDO POUCO $

  • Então você faz um vetor numérico CUBA que é exatamente o tempo que o vector cliente. Isso é chamado pré-afectação de um vector.



  • Então você loop sobre índices de cliente em vez do próprio vector usando a função seq_along (). Na primeira passagem através do laço, o primeiro valor CUBA está definido para ser o resultado de interruptor() aplicada ao primeiro valor cliente. Na segunda passagem, o segundo valor de CUBA é o resultado de interruptor() aplicada ao segundo valor cliente e assim por diante.

Você pode ser tentado para substituir seq_along (cliente) com o vector 1: nclient, mas isso seria uma má idéia. Se o vector cliente tem um comprimento de 0, seq_along (cliente) cria um vector vazio e o código do ciclo nunca seja executada. Se você usar 1: nclient, R cria um vetor c (1,0) e loop sobre esses dois valores, dando-lhe um resultado completamente errado.

Toda vez que você alongar um objeto em R, R tem que copiar todo o objeto e movê-lo para um novo local na memória. Isso tem dois efeitos:

  • Primeiro, ele retarda o seu código, porque toda a cópia leva tempo.

  • Em segundo lugar, como R move-se continuamente as coisas na memória, essa memória é dividida em uma série de pequenos espaços.

Isso é chamado fragmentação, e faz a comunicação entre R ea memória menos suave. Você pode evitar essa fragmentação por pré-reparte memória como no exemplo anterior.


Publicações relacionadas