Como combinar funções em R

Ao usar funções como argumentos em R, às vezes é necessário combinar funções. Isto também significa que se você tem um objeto com o mesmo nome que a função que deseja usar, toda esta construção não vai funcionar. Suponha que você teve a ideia não tão inteligente de criar um vetor com o ganho relativo de algumas rodadas de pôquer como este:

> Fase lt; - c (0,48, -0.52,1.88)

Se você tentou chamar addPercent () com o DIVERSÃO argumentação sobre este vector, você receber o seguinte erro:

> AddPercent (round, FUN = volta) Erro no addPercent (round, FUN = volta): não foi possível encontrar a função "FUN"

Em vez de transmitir o código do volta função, R passa o vector volta como o DIVERSÃO argumento. Para evitar este tipo de problemas, você pode usar uma função especial, match.fun (), no corpo de addPercent (), como isso:

addPercent lt; - função (x, mult = 100, FUN, ...) {FUN lt; - match.fun (FUN) por cento lt; - FUN (x * mult, ...) pasta (por cento, "%", Set = "")}

Esta função irá procurar por uma função que corresponde ao nome volta e copie esse código no DIVERSÃO argumento em vez do vector volta. Como um bônus adicional, match.fun () também permite que você use um objeto de caracteres como argumento, então especificando FUN = 'round' agora funciona bem.

Todas as funções nativas R usar match.fun () para este fim, e é recomendado para você fazer o mesmo se você escrever código que será usado por outras pessoas. Mas passando funções funciona bem sem o uso de match.fun () bem, desde que você use nomes sensatas para os outros objetos em seu espaço de trabalho.

menu