Mijn tweede script
Het volgende voorbeeld van een script komt uit de opdrachten van Statistiek-1:
Schrijf een instructie in R waarmee je de standaarddeviatie van een variabele kunt uitrekenen [gebruik R als rekenmachine, zonder gebruik te maken van de ingebakken functie sd]
De variabele uit de opdracht geven we de naam x. We gaan er van uit dat x de vorm heeft van een numerieke vector. Om de standaarddeviatie van de waarden in x uit te rekenen zijn dan de volgende opdrachten nodig:
# script: bereken standaardeviatie van vector x
# bereken het gemiddelde van x =
# de som van alle waarden in x gedeeld door het aantal waarden in x
gem <- sum(x) / length(x)
# bereken de som van de kwadraten van de afwijkingen van het gemiddelde
kwasom <- sum((x-gem)^2)
variantie <- kwasom/(length(x)-1)
stdev <- variantie^0.5
print(stdev)
Kopieer en plak de bovenstaande regels in een tekstfile (Notepad, of Textwrangler), en bewaar die file met naam standvar.r in de working directory van R.
Eerst wat data binnen halen om te kunnen bewerken:
> # lees een dataframe in.
> cohort <- read.table("gegevens.txt", header=T)
> # maak de namen in de eerste rij van cohort beschikbaar als namen van
> # variabelen met bijbehorende inhoud (kolommen van dataframe)
> attach(cohort).
> # en laat zien om welke variabelen het gaat.
> names(cohort)
[1] "lichaam" "arm" "pols" "geslacht" "hand" "ogen"
Vervolgens gaan we de standaarddeviatie van de variabele lichaam uitrekenen met ons zelf geschreven script standvar.r. Eerst zorgen we dat lichaam de juiste naam, x, krijgt om het script goed te laten werken.
> x <- lichaam
Daarna lezen we het script in, waarna het direct werkt:
> source("standvar.r")
[1] 9.643303
We zien in dit voorbeeld dat we zelf moeten zorgen dat de input voor het script in de afgesproken vorm (vector) en met de afgesproken naam (x) klaar staat.
Dit script werkt dus met een zg globale variabele als input: een variabele die in het geheugen van R beschikbaar is. Ook de variabelen die door het script tijdens zijn berekeningen worden gemaakt, zoals kwasom, variantie, en stdev komen gewoon in het geheugen van R terecht en worden zo dus globale variabelen. Ze blijven niet beperkt tot het domein van het script zelf.
In dat geval, dus als variabelen beperkt zouden zijn tot het domein van het script, noemen we ze lokale variabelen. Dat wil zeggen: ze zijn er alleen zo lang het script aan het werk is, maar zodra het script klaar is en de output naar scherm of printer of file is geschreven, zijn de variabelen verdwenen. Nu is het zo dat scripts het fenomeen van dergelijke lokale variabelen niet kennen!
Nota Bene: Alle variabelen die in een script worden gebruikt of gemaakt zijn dus globaal. Dit in tegenstelling tot wat het geval is in functies.
