Video: Statistical Programming with R by Connor Harris 2025
Hver gang kombinerer du en vektor med flere værdier og en med en enkelt værdi i en funktion. R anvender funktionen ved hjælp af den enkelte værdi for hver værdi i vektoren. Men genbrug går langt ud over disse eksempler.
Når du giver to vektorer med ulige længder til en genbrugsfunktion, gentager R den korteste vektor så ofte som nødvendigt for at udføre den opgave, du bad om at udføre.
Antag at du deler op med antallet af kurve Granny lavet i to pointers og tre pointers: >> Granny. pointers <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
Du arrangerer tallene på en sådan måde, at for hvert spil, først antallet af to -points gives, efterfulgt af antallet af tre-pointers.
Nu ønsker Granny at vide, hvor mange point hun faktisk har scoret denne sæson. Du kan beregne det nemt ved hjælp af genbrug:
Du har lavet en vektor med antallet af point for hver kurv:
c (2, 3)
-
Du fortalte R at multiplicere den vektor med vektoren Granny. pejlemærker
.
-
R multiplicerede det første nummer i Granny. pointers med 2, den anden ved 3, den tredje af 2 igen, og så videre. Du sætter resultatet i variabelpunkterne.
-
Du opsummerede alle numrene i point for at få det samlede antal point, der blev scoret.
Faktisk kan du bare forlade trin 3. Ved hjælp af funktionerne kan du gøre dette i en linje med kode: >> sum (Granny pointers * c (2, 3)) -
Genbrug kan være lidt vanskelig. Hvis længden af den længere vektor ikke er nøjagtigt et multipel af længden af den kortere vektor, kan du få uventede resultater.
Nu ønsker Granny at vide, hvor meget hun forbedrede hvert spil. At være lat, har du en snedig plan. Med diff () beregner du hvor mange flere eller færre kurve, der er lavet, Granny, som hun lavede i spillet før. Derefter bruger du vectorized divisionen til at opdele disse forskelle med antallet af kurve i spillet. Til toppen af det multiplicerer du med 100 og runder hele vektoren. Alle disse beregninger tager en linje med kode: >> runde (kurver af. Granny) / kurve. Af. Granny * 100) 1. 2. 3. 4. 5. 6. -67 25 20 50 -67 -267
Den sidste værdi ser ikke rigtig ud, fordi det er umuligt at score mere end 100 procent færre kurve. R giver dig ikke bare det rare resultat; det advarer dig også om, at længden af diff (kurver af. Granny) ikke passer længden af kurve. af. Granny:
Advarselsmeddelelse: I diff (kurve af. Granny) / kurve.af. Granny: længere objektlængde er ikke et flertal af kortere objektlængde
Vektorkurverne. af. Granny er seks værdier længe, men resultatet af diff (kurver af. Granny) er kun fem værdier langt. Så faldet på 267 procent er faktisk den sidste værdi af kurve. af. Granny divideret med den første værdi af diff (kurve af. Granny). I dette eksempel bliver den korteste vektor, diff (kurver af. Granny) genbrugt af divisionsoperatøren.
Det resultat var ikke, hvad du havde tænkt dig. For at forhindre dette resultat skal du kun bruge de første fem værdier af kurve. af. Granny, så længden af begge vektorer matcher: >> runde (diff. Kurve af. Granny) / kurve. Af. Granny [1: 5] * 100) 2nd 3rd 4th 5th 6th -67 25 20 50 -67
Og alt det er vektorisering.