Como Loop Through Valores em R

Às vezes, ao fazer escolhas usando R, você pode usar apenas um único valor para basear sua escolha. Você pode aplicar esse código em cada valor que você tem à mão, mas faz muito mais sentido para automatizar esta tarefa.

construir um para laço

Como em muitas outras linguagens de programação, você repetir uma ação para cada valor em um vetor usando um para loop. Você construir um para circuito em I como se segue:

for (i em valores) {... fazer alguma coisa ...}

este para laço consiste nas seguintes partes:

  • a palavra-chave para, seguido por parênteses.

  • Um identificador entre os parênteses. Neste exemplo, usamos Eu, mas isso pode ser qualquer nome de objeto que você gosta.

  • a palavra-chave dentro, que se segue ao identificador.

  • Um vetor com os valores de varrer. Neste código de exemplo, usamos o objeto valores, mas que mais uma vez pode ser qualquer vector que você tem disponível.

  • Um bloco de código entre as cintas que tem de ser realizada para cada valor no objecto valores.

No bloco de código, você pode usar o identificador. Cada vez R percorre o código, R atribui o próximo valor no vector com os valores para o identificador.

Calcular valores numa para laço

Vamos dar mais uma olhada na priceCalculator () função. Mais cedo, vamos mostrar-lhe algumas possibilidades para se adaptar essa função para que possa aplicar uma taxa de IVA diferente para clientes públicos, privados e estrangeiros. Você não pode usar qualquer uma dessas opções de uma forma vectorized, mas você pode usar um para loop para que a função pode calcular o preço para vários clientes ao mesmo tempo.

Use os valores do vector

adaptar o priceCalculator () função como se segue:

priceCalculator lt; - função (horas, pph = 40, cliente) {net.price lt; - horas * PPH * IfElse (horas> 100, 0,9, 1) IVA lt; - numérico (0) para (i no cliente) {IVA lt; - c (IVA, switch (i, privado = 1,12, public = 1,06, 1))} tot.price lt; - * net.price VATround (tot.price)}

A primeira ea última parte da função não mudaram, mas na seção do meio, você faça o seguinte:

  1. Criar um vetor numérico com comprimento 0 e chamá-lo CUBA.

  2. Para cada valor no cliente do vector, aplique interruptor() para selecionar a quantidade correta de IVA a ser pago.

  3. Em cada rodada através do laço, adicione o resultado interruptor() no final do vector CUBA.

O resultado é um vetor CUBA que contém, para cada cliente, a IVA correcto que necessita de ser aplicada. Você pode testar isso, adicionando, por exemplo, uma variável digitar para os clientes de estrutura de dados que você criou na seção anterior como este:

> Clientes $ type lt; - c ( 'public', 'estrangeiro', 'privada', 'estrangeiro')> priceCalculator (clientes $ horas, cliente = clientes $ tipo) [1] 1060 3960 5040 1600

menu