Video: Building a Marsbase is a Horrible Idea: Let’s do it! 2024
Hver gang kombinerer du en vektor med flere verdier og en med en enkelt verdi i en funksjon. R bruker funksjonen ved å bruke den enkelte verdien for hver verdi i vektoren. Men resirkulering går langt utover disse eksemplene.
Når du gir to vektorer med ulik lengde til en resirkuleringsfunksjon, gjentar R den korteste vektoren så ofte som nødvendig for å utføre oppgaven du bedt om å utføre.
Anta at du delte opp antallet kurver Granny laget i to pointers og tre pointers: >> Granny. pekere <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
Du ordner tallene på en slik måte at for hvert spill, først antall to poeng blir gitt, etterfulgt av antall tre pointers.
Nå vil Granny vite hvor mange poeng hun faktisk har skåret denne sesongen. Du kan beregne det enkelt ved hjelp av resirkulering:
Du har laget en vektor med antall poeng for hver kurv:
c (2, 3)
-
Du fortalte R å multiplisere den vektoren av vektoren Granny. pekere
.
-
R multiplisert det første nummeret i Granny. pekere med 2, den andre ved 3, den tredje av 2 igjen, og så videre. Du legger resultatet i variabelpunktene.
-
Du summerte alle tallene i poeng for å få det totale antall poeng som ble scoret.
Faktisk kan du bare forlate trinn 3. Ved hjelp av funksjonene kan du gjøre dette i en linje med kode: >> sum (Granny pointers * c (2, 3)) -
Gjenvinning kan være litt vanskelig. Hvis lengden på den lengre vektoren ikke er akkurat et multiplum av lengden på den kortere vektoren, kan du få uventede resultater.
Nå vil Granny vite hvor mye hun har forbedret hvert spill. Å være lat, du har en listig plan. Med diff () beregner du hvor mange flere eller færre kurver Granny gjort enn hun gjorde i spillet før. Deretter bruker du vectorized divisjonen til å dele disse forskjellene med antall kurver i spillet. Til toppen av det, multipliserer du med 100 og runder hele vektoren. Alle disse beregningene tar en linje med kode: >> rund (diff. Kurver av. Granny) / kurver. Av. Granny * 100) 1. 2. 3. 4. 5. 6. 67. 67. 20 20 50. - 67 -267.
Den siste verdien ser ikke riktig ut, fordi det er umulig å score mer enn 100 prosent færre kurver. R gir deg ikke bare det rare resultatet; Det advarer deg også om at lengden på diff (kurver av. Granny) ikke passer lengden på kurver. av. Granny:
Advarselsmelding: I diff (kurver av. Granny) / kurver.av. Granny: lengre objektlengde er ikke et flertall med kortere objektlengde
Vektorkurver. av. Granny er seks verdier lenge, men resultatet av diff (kurver av. Granny) er bare fem verdier lange. Så nedgangen på 267 prosent er faktisk den siste verdien av kurver. av. Granny delt av den første verdien av diff (kurver av. Granny). I dette eksemplet blir den korteste vektoren, diff (kurver av. Granny) resirkulert av divisjonsoperatøren.
Dette resultatet var ikke det du hadde tenkt. For å unngå dette resultatet, bør du bare bruke de første fem verdiene av kurver. av. Granny, slik at lengden på begge vektorene stemmer overens: >> runde (diff (kurver av. Granny) / kurver. Av. Granny [1: 5] * 100) 2dre 3. 4de 6te -67 25 20 50 -67
Og alt som er vektorisering.