Video: Nya Volvo V60 – Guidad tur av vår senaste herrgårdsvagn 2024
När man använder funktioner som argument i R, är det ibland nödvändigt att matcha funktioner. Det betyder också att om du har ett objekt med samma namn som den funktion du vill använda, fungerar inte hela konstruktionen. Antag att du hade den inte så snygga idén att skapa en vektor med den relativa vinsten av ett par omgångar poker så här: >> round <- c (0, 48, -0, 52, 1. 88) < Om du försökte ringa addPercent () med FUN-argumentet på denna vektor får du följande fel:
>> addPercent (round, FUN = round) Fel i addPercent (round, FUN = round): kunde inte hitta funktionen "FUN"
I stället för att passera koden för den runda funktionen, R överför vektorrundan som FUN-argumentet. För att undvika sådana problem kan du använda en speciell funktion, matcha. roligt (), i kroppen av addPercent (), så här:
addPercent <- funktion (x, mult = 100, FUN, …) {FUN <- match. roligt (FUN) procent <- fUN (x * mult, …) klistra in (procent, "%", sep = ")}Den här funktionen söker efter en funktion som matchar namnet runt och kopierar den till FUN argumentet istället för vektorrundan. Som en extra bonus kan matcha. fun () också använda dig av ett karaktärsobjekt som argumentet. Därför fungerar FUN = 'round' nu också.
Alla inbyggda R-funktioner använder match. Fun () för detta ändamål, och det rekommenderas att du gör detsamma om du skriver kod som kommer att användas av andra personer. Men passande funktioner fungerar bra utan att använda matchning. roligt (), så länge du använder förnuftiga namn för de andra objekten i din arbetsytan.