Video: 3 Arguments Why Marijuana Should Stay Illegal Reviewed 2024
Telkens combineert u een vector met meerdere waarden en één met één waarde in een functie. R past de functie toe waarbij die ene waarde wordt gebruikt voor elke waarde in de vector. Maar recycling gaat veel verder dan deze voorbeelden.
Telkens wanneer u twee vectoren met ongelijke lengten aan een recyclingfunctie geeft, herhaalt R de kortste vector zo vaak als nodig is om de taak uit te voeren die u hem hebt gevraagd uit te voeren.
Stel dat je het aantal manden verdeelde dat oma maakte in twee wijzers en driepunters: >> oma. pointers <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
Je rangschikt de nummers op een zodanige manier dat voor elke game, eerst het aantal van twee -pointers wordt gegeven, gevolgd door het aantal driepunters.
Nu wil oma weten hoeveel punten ze dit seizoen heeft gescoord. Je kunt dat gemakkelijk berekenen met behulp van recycling:
U hebt een vector gemaakt met het aantal punten voor elke basket:
c (2, 3)
-
U hebt R verteld om die vector te vermenigvuldigen met de vector Granny. pointers
.
-
R vermenigvuldigde het eerste nummer in oma. wijzers door 2, de tweede door 3, de derde door 2 opnieuw, enzovoort. U zet het resultaat in de variabele punten.
-
Je hebt alle getallen in punten opgeteld om het totale aantal gescoorde punten te krijgen.
In feite kunt u stap 3 gewoon weglaten. Het nesten van functies stelt u in staat om dit in één regel code te doen: >> sum (Granny. Pointers * c (2, 3)) -
Recycling kan een beetje lastig zijn. Als de lengte van de langere vector niet exact een veelvoud van de lengte van de kortere vector is, kunt u onverwachte resultaten krijgen.
Nu wil oma weten hoeveel ze elke wedstrijd heeft verbeterd. Lui zijn, je hebt een sluw plan. Met diff () bereken je hoeveel meer of minder manden Granny heeft gemaakt dan ze eerder in het spel heeft gemaakt. Vervolgens gebruik je de gevectoriseerde divisie om deze verschillen te delen door het aantal manden in het spel. Om het af te maken, vermenigvuldig je met 100 en rond de hele vector. Al deze berekeningen nemen één regel code: >> ronde (diff (manden van. Oma) / manden. Van oma * 100) 1e 2e 3e 4e 5e 6e -67 25 20 50 -67 -267
Die laatste waarde ziet er niet goed uit, omdat het onmogelijk is om meer dan 100 procent minder manden te scoren. R geeft je niet alleen dat rare resultaat; het waarschuwt je ook dat de lengte van diff (manden van. oma) niet op de lengte van manden past. van. Oma:
Waarschuwingsbericht: In diff (manden. Van. Oma) / manden.van. Granny: langere objectlengte is geen veelvoud van kortere objectlengte
De vectormanden. van. Granny is zes waarden lang, maar de uitkomst van diff (baskets. Of. Granny) is slechts vijf waarden lang. Dus de daling van 267 procent is in feite de laatste waarde van manden. van. Granny gedeeld door de eerste waarde van diff (baskets. Of. Granny). In dit voorbeeld wordt de kortste vector, diff (baskets. Of. Granny), gerecycled door de divisieoperator.
Dat resultaat was niet wat u van plan was. Om dat resultaat te voorkomen, zou u alleen de eerste vijf waarden van manden moeten gebruiken. van. Granny, dus de lengte van beide vectoren komt overeen met: >> round (diff (manden van. Granny) / baskets. Of. Granny [1: 5] * 100) 2nd 3rd 4th 5th 6th -67 25 20 50 -67
En dat is vectorisatie.