Como vetorizar suas funções em R

funções Vectorized são uma característica muito útil de R, mas os programadores que estão acostumados a outras línguas muitas vezes têm dificuldade com este conceito em primeiro lugar. UMA vectorized função não funciona apenas em um único valor, mas em todo um vector de valores ao mesmo tempo.

O seu reflexo natural como um programador pode ser a de um loop sobre todos os valores do vector e aplicar a função, mas que torna desnecessário vectorização. Confie em nós: Quando você começar a usar vetorização em R, que vai ajudar a simplificar seu código.

Para tentar funções vetorizadas, você tem que fazer um vetor. Você pode fazer isso usando a c () função, que significa concatenar.Os valores reais são separados por vírgulas.

Aqui está um exemplo: Suponha que Granny joga basquete com seu amigo Geraldine, e você manter uma pontuação de número de cestas em cada jogo da avó. Depois de seis jogos, você quer saber quantos cestos Granny tem feito até agora nesta temporada. Você pode colocar esses números em um vetor, como este:

> baskets.of.Granny lt; - C (12,4,4,6,9,3)> baskets.of.Granny [1] 12 6 4 4 9 3

Para encontrar o número total de cestas Granny feita, basta digitar o seguinte:

> Sum (baskets.of.Granny) [1] 38

Você poderia obter o mesmo resultado passando por cima o número do vetor por número, adicionando cada novo número à soma dos números anteriores, mas esse método exigiria que você escrever mais código e que seria necessário mais tempo para calcular. Você não vai notar que em apenas seis números, mas a diferença será óbvio quando você tem que somar alguns milhares deles.

Neste exemplo de vetorização, a função usa o vector completo para dar-lhe um resultado. Concedido, este exemplo é trivial (que você pode ter adivinhado que soma() iria realizar a mesma meta), mas para outras funções de I, a vectorização podem ser menos óbvias.

Um exemplo menos óbvio de uma função vectorized é o colar() função. Se você fizer um vector com os primeiros nomes dos membros de sua família, colar() pode adicionar o sobrenome para todos com um comando, como no exemplo a seguir:

> firstnames lt; - c ( "Joris", "Carolien", "Koen")> sobrenome lt; - "Meys"> Colar (firstnames, sobrenome) [1] "Joris Meys" "Carolien Meys" "Koen Meys"

R tem o vector primeiro nome e, em seguida, cola o último nome para cada valor. Como isso é legal? Na verdade, R combina dois vectores. O segundo vector - neste caso, último nome - é apenas um valor de comprimento. Esse valor fica reciclado pelo colar() funcionar durante o tempo necessário.

Você também pode dar R dois vetores mais longos, e R combiná-los elemento por elemento, como este:

> autores lt; - c ( "Andrie", "Joris")> lastnames lt; - c ( "de Vries", "Meys")> Colar (autores, lastnames) [1] "Andrie de Vries" "Joris Meys"

Nenhum código complicado é necessário. Tudo que você tem a fazer é fazer os vetores e colocá-los na função.

menu