Como reciclar argumentos em r

Video: 200 Идеи для повторного колес. Корзины. конвертировать

Cada vez, você combina um vetor com valores múltiplos e um com um único valor em uma função. R aplica a função, utilizando esse valor único para cada valor no vector. Mas a reciclagem vai muito além destes exemplos.

Toda vez que você dá dois vetores com comprimentos desiguais para uma função de reciclagem, R repete o vetor mais curto quantas vezes for necessário para levar a cabo a tarefa que você pediu que ele execute.

Suponha que você dividir o número de cestas Granny feitas em-dois ponteiros e de três pontos:

gt; Granny.pointers lt; - c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)

Você organiza os números de tal forma que para cada jogo, pela primeira vez o número de-dois ponteiros é dado, seguido pelo número de três pontos.

Agora Granny quer saber quantos pontos ela está realmente marcou nesta temporada. Pode-se calcular que facilmente com a ajuda de reciclagem:

gt; pontos lt; - Granny.pointers * C (2, 3) gt; pontos [1] 20 6 8 0 8 3 8 6 14 6 2 6GT; soma (pontos) [1] 87

Agora, o que você faz aqui?

  1. Você fez um vetor com o número de pontos para cada cesta:

    c (2, 3)
  2. Você disse a R multiplicar esse vetor pelo vetorGranny.pointers.

    R multiplicado o primeiro número nas Granny.pointers por 2, a segunda por 3, a terceira por 2 novamente, e assim por diante.



  3. Você coloca o resultado na variável pontos.

  4. Você resumiu todos os números em pontos para obter o número total de pontos marcados.

Na verdade, você pode simplesmente deixar de fora Passo 3. O aninhamento de funções permite que você faça isso em uma linha de código:

gt; soma (Granny.pointers * C (2, 3))

Video: MAS DE 100 IDEAS PARA RECICLAR LAS LATAS Y LAS ANILLAS, REUTILIZAR

A reciclagem pode ser um pouco complicado. Se o comprimento da mais longa vector não é exatamente um múltiplo do comprimento do vetor mais curto, você pode obter resultados inesperados.

Agora Granny quer saber o quanto ela melhorou a cada jogo. Ser preguiçoso, você tem um plano astuto. Com diff (), você calcular quantos mais ou menos cestas Granny feito do que ela fez no jogo antes. Então você usa a divisão vectorized para dividir estas diferenças, o número de cestas no jogo. Para cobri-lo fora, você multiplicar por 100 e toda a volta do vetor. Todos estes cálculos têm uma linha de código:

Video: Como Fazer Sapatinhos Para Bebês - Aprenda Fazer Fitas para Bebê e Ganhe Dinheiro

gt; round (diff (baskets.of.Granny) / baskets.of.Granny * 100) 1º 2º 3º 4º 5º 6º-67 25 20 50 -67 -267

Esse último valor não parece certo, porque é impossível a marcar mais de 100 por cento menos cestas. R não apenas dar-lhe que result- estranho ele também avisa que o comprimento diff (baskets.of.Granny) não se encaixa no período de baskets.of.Granny:

Mensagem de aviso: Em comparação (baskets.of.Granny) / baskets.of.Granny: comprimento mais longo objecto não é um múltiplo de um comprimento mais curto objecto

o vector baskets.of.Granny é de seis valores muito tempo, mas o resultado de diff (baskets.of.Granny) está a apenas cinco valores de comprimento. Assim, a diminuição de 267 por cento é, na verdade, o último valor de baskets.of.Granny dividido pelo primeiro valor de diff (baskets.of.Granny). Neste exemplo, o vector mais curto, diff (baskets.of.Granny), é reciclado pelo operador de divisão.

Esse resultado não era o que você pretende. Para evitar esse resultado, você deve usar apenas os primeiros cinco valores de baskets.of.Granny, de modo que o comprimento de ambos os vetores jogo:

gt; round (diff (baskets.of.Granny) / baskets.of.Granny [1: 5] * 100) 2º 3º 4º 5º 6º-67 25 20 50 -67

E tudo o que é vetorização.


Publicações relacionadas