Video: Hur man återvinner sopor i Sverige 2024
Varje gång kombinerar du en vektor med flera värden och en med ett enda värde i en funktion. R tillämpar funktionen med hjälp av det enda värdet för varje värde i vektorn. Men återvinning går långt bortom dessa exempel.
När du ger två vektorer med ojämn längd till en återvinningsfunktion, upprepar R den kortaste vektorn så ofta som nödvändigt för att utföra den uppgift du uppmanade den att utföra.
Antag att du delade upp antalet korgar Granny gjort till tvåpekare och trepekare: >> Granny. pekare <- c (10, 2, 4, 0, 4, 1, 4, 2, 7, 2, 1, 2)
Du arrangerar siffrorna på ett sådant sätt att för varje spel, först antalet -poängare ges, följt av antalet trepekare.
Nu vill Granny veta hur många poäng hon faktiskt har gjort denna säsong. Du kan beräkna det enkelt med hjälp av återvinning:
Du gjorde en vektor med antalet poäng för varje korg:
c (2, 3)
-
Du sa att R skulle multiplicera den vektorn av vektorn Granny. pekare
.
-
R multiplicerade det första numret i Granny. pekar med 2, den andra med 3, den tredje med 2 igen, och så vidare. Du sätter resultatet i variabelpunkterna.
-
Du summerade alla siffror i poäng för att få det totala antalet poäng poäng.
I själva verket kan du bara lämna ut steg 3. Funktionen av funktioner gör att du kan göra detta i en rad kod: >> summa (Granny pointers * c (2, 3)) -
Återvinning kan vara lite knepigt. Om längden på den längre vektorn inte är exakt en multipel av längden på den kortare vektorn kan du få oväntade resultat.
Nu vill Granny veta hur mycket hon förbättrat varje spel. Att vara lat, du har en listig plan. Med diff () beräknar du hur många fler eller färre korgar Granny gjorde än hon gjorde i spelet innan. Sedan använder du den vektoriserade divisionen för att dela dessa skillnader med antalet korgar i spelet. Till toppen av det multiplicerar du med 100 och runt hela vektorn. Alla dessa beräkningar tar en rad kod: >> runda (diff (korgar av. Granny) / korgar. Av. Granny * 100) 1: a 2: a 3: e 4: e 6: e -67 25 20 50 -67 -267
Det sista värdet ser inte rätt ut, eftersom det är omöjligt att göra fler än 100 procent färre korgar. R ger dig inte bara det konstiga resultatet; det varnar dig också att längden av diff (korgar av. Granny) passar inte längden på korgarna. av. Granny:
Varningsmeddelande: I diff (korgar av. Granny) / korgar.av. Granny: längre objektlängd är inte ett flertal med kortare objektlängd
vektorkorgarna. av. Granny är sex värden länge, men resultatet av diff (korgar av. Granny) är bara fem värden långa. Så minskningen på 267 procent är i själva verket det sista värdet av korgar. av. Granny dividerad med det första värdet av diff (korgar av. Granny). I detta exempel återvinns den kortaste vektorn, diff (korgar av. Granny) av divisionsoperatören.
Det resultatet var inte vad du tänkte. För att förhindra det resultatet ska du bara använda de första fem värdena på korgar. av. Granny, så längden på båda vektorerna matchar: >> round (diff (korgar av. Granny) / korgar. Av. Granny [1: 5] * 100) 2: a 3: e 4: e 6: e -67 25 20 50 -67
Och allt som är vektorisering.