Video: Wiskunde - lineaire functies en grafieken - WiskundeAcademie 2024
Wanneer u functies gebruikt als argumenten in R, is het soms nodig om functies te matchen. Dit betekent ook dat als je een object hebt met dezelfde naam als de functie die je wilt gebruiken, dit hele construct niet zal werken. Stel dat je het niet-zo-slimme idee had om een vector te maken met de relatieve winst van een paar rondes poker als volgt: >> round <- c (0 48, -0, 52, 1. 88) < Als u addPercent () probeerde aan te roepen met het FUN-argument op deze vector, krijgt u de volgende foutmelding:
>> addPercent (round, FUN = round) Fout in addPercent (round, FUN = round): kon de functie "FUN"
niet vinden in plaats van de code van de ronde functie door te geven, R geeft de vectorronde door als het PLEZIER-argument. Om dit soort problemen te voorkomen, kunt u een speciale functie, match gebruiken. fun (), in de body van addPercent (), zoals deze:
addPercent <- functie (x, mult = 100, FUN, …) {FUN <- match. leuk (FUN) procent <- fUN (x * mult, …) paste (procent, "%", sep = ")}Deze functie zoekt naar een functie die overeenkomt met de naamronde en kopieert die code naar FUN argument in plaats van de vectorronde Als extra bonus kunt u met match () ook een tekenobject als argument gebruiken, zodat FUN = 'round' nu ook werkt.
Alle native R-functies gebruiken match.fun () voor dit doel, en het is aan te raden hetzelfde te doen als je code schrijft die door anderen wordt gebruikt.Maar passerende functies werken prima zonder match te gebruiken. fun () ook, zolang je verstandige namen gebruikt voor de andere objecten in je werkruimte.