Hvordan Loop Gjennom verdier i R

July 30  by Eliza

Noen ganger når du gjør valg ved hjelp av R, kan du bruke bare en enkelt verdi å basere ditt valg på. Du kan bruke denne koden på hver verdi du har for hånd, men det gjør langt mer fornuftig å automatisere denne oppgaven.

Konstruer en for løkke

Som i mange andre programmeringsspråk, gjentar du en handling for hver verdi i en vektor ved hjelp av en for loop. Du konstruere en for løkke i R som følger:

for (i i verdier) {
... Gjøre noe ...
}

Dette for loop består av følgende deler:

  • Nøkkelordet for, etterfulgt av parenteser.
  • En identifikator mellom parentesene. I dette eksempelet bruker vi i, men som kan være en hvilken som helst objekt navn du liker.
  • Nøkkelordet i, som følger identifikator.
  • En vektor med verdier til løkke over. I dette eksempelet kode, bruker vi objekt verdier, men som igjen kan være en hvilken som helst vektor du har tilgjengelig.
  • En kodeblokk mellom bukseseler som må utføres for hver verdi i objektverdier.

I koden blokk, kan du bruke identifikatoren. Hver gang R looper gjennom koden, tildeler R neste verdi i vektoren med verdier til identifikator.

Beregne verdier i en for løkke

La oss € ™ s ta en ny titt på priceCalculator () -funksjonen. Tidligere, viser vi deg noen muligheter for å tilpasse denne funksjonen slik at du kan bruke en annen momssats for offentlige, private og utenlandske klienter. Du canâ € ™ t bruke noen av disse alternativene i en vektorisert måte, men du kan bruke en for loop, slik at funksjonen kan beregne prisen for flere klienter samtidig.

Bruk verdier av vektoren

Tilpasse priceCalculator () -funksjonen som følger:

priceCalculator <- funksjon (timer, pph = 40, klient) {
net.price <- timer * pph *
ifelse (timer> 100, 0,9, 1)
Moms <- numerisk (0)
for (i i-klient) {
Moms <- c (moms, switch (i, privat = 1.12, offentlig = 1,06, 1))
}
tot.price <- net.price * MVA
runde (tot.price)
}

Den første og den siste delen av funksjonen havenâ € ™ t endret, men i den midtre delen, gjør du følgende:

  1. Lag en numerisk vektor med lengde 0 og kaller det moms.
  2. For hver verdi i vektoren klient, gjelder bryteren () for å velge den riktige mengden av merverdiavgift som skal betales.
  3. I hver runde gjennom løkken, legge til utfallet av bryteren () ved utgangen av vektoren mva.

Resultatet er en vektor moms som inneholder, for hver klient, riktig merverdiavgift som må brukes. Du kan teste dette ved å legge til, for eksempel en variabel type til dataene ramme klienter du opprettet i forrige avsnitt som dette:

> klienter $ typen <- c ("offentlig", "utlandet", "private", "utlandet")
> PriceCalculator (klienter $ timer, klient = klienter $ type)
[1] 1060 3960 5040 1600