Verschillende datatypen in R

Waarden en variabelen hebben verschillende klassen en datatypen. Voorbeelden zijn getallen (numeric/integer), woorden (character/string), boolean (TRUE of FALSE). Ook zijn er types zoals matrixen (matrix), data frames (data frame), lijsten (list). Deze types zijn verzamelingen van data.

Ook onze zojuist aangemaakte variabelen hebben een klasse. R heeft deze automatisch toegewezen. Met de class() functie kunnen we er achter komen welk datatype een variabele is.

naam <- "Geertje"

class(naam)
## [1] "character"
class(leeftijd)
## Error in eval(expr, envir, enclos): object 'leeftijd' not found

De klasse van de variabele naam is een character en leeftijd is numeric. Hierbij kun je het character datatype vergelijken met het string datatype die je in andere programmeertalen tegenkomt. Het numeric datatype in R kun je het best vergelijken met het float datatype die je in andere programmeertalen tegenkomt.

Automatische definitie van datatypen in R

Zoals je misschien hebt gemerkt, hoef je in R niet aan te geven welke klasse een variabele moet krijgen. Dit doet R automatisch. Bij een numerieke waarde weet R namelijk dat het om een numeric klasse gaat, net als voor bijvoorbeeld een woord of een naam automatisch het character datatype wordt toegewezen.

Bij andere programmeertalen zoals Java en C# is het nodig om aan te geven welk datatype de nieuwe variabele moet hebben, bijvoorbeeld:

C#: static string naam = "Arie";

R: naam <- "Arie" of naam = "Arie".

Datatypes van variabelen in R veranderen

Het is handig dat R automatisch de klasse definieert. Echter ben je soms niet tevreden met het datatype dat R automatisch toewijst. Daarom kun je in R ook zeer eenvoudig het datatype veranderen. Als wij bijvoorbeeld de variabele leeftijd willen veranderen van numeric naar character, gebruiken wij de as.character-functie.

# de variabele "leeftijd" definiëren

leeftijd <- 26
class(leeftijd)
## [1] "numeric"
#een variabele "leeftijd2" aanmaken die met "string" als datatype

leeftijd2 <- as.character(leeftijd)
leeftijd2
## [1] "26"
class(leeftijd2)
## [1] "character"

Echter kunnen niet alle variabelen naar de gewenste datatype geconverteerd worden. Zo kun je bijvoorbeeld een woord niet omzetten naar een numerieke waarde.

naam <- "David"

# een nieuwe variabele "naam2" aanmaken met een naam geconverteerd naar numeriek

naam2 <- as.numeric(naam)
## Warning: NAs introduced by coercion
class(naam2)
## [1] "numeric"
naam2
## [1] NA

Zoals je kunt zien, krijgen we een waarschuwing (Warning message:) die aangeeft dat de waarde wegvalt door het omzetten van het datatype.

NA's Wat de waarschuwing letterlijk zegt is: "Er zijn NA's ontstaan, dat staat voor Not Available (lege en onbruikbare waarden), omdat we een character waarde 'dwingen' (coerce) naar een ander datatype". De kans is groot dat je dit later tijdens het analyseren in R tegenkomt. Het is namelijk heel makkelijk om over het hoofd te zien dat we een datatype op een verkeerde manier converteren.

Character en Numeric vectoren

Als we een vector leeftijd willen aanmaken en daar het getal 26 willen toewijzen, gaat dit op dezelfde manier. Nadat de variabele is aangemaakt, kunnen we de waarde die eraan hangt terugvinden door simpelweg de variabele leeftijd weer in te voeren. Het is namelijk een van de principes van programmeertalen om een toegewezen waarde te onthouden. Zo weet R in deze sessie dat aan de variabele leeftijd de numerieke waarde 26 is toegewezen. Belangrijk om te weten is dat R vectoren kan overschrijven. Als we bijvoorbeeld eerst een vector genaamd leeftijd aanmaken met de waarde 26 en later een vector met dezelfde naam aanmaken met de waarde 44, wordt alleen 44 onthouden. Hierbij wordt de waarde 26 vergeten en kun je de toewijzing ook nooit meer terugvinden, je kunt het alleen maar opnieuw aanmaken.

leeftijd <- 26


leeftijd
## [1] 26
leeftijd <- 44

leeftijd
## [1] 44
#of

woonplaats <- "Lisse"

# geeft:
woonplaats
## [1] "Lisse"
# nieuw

woonplaats <- "Oldenzaal"

# geeft

woonplaats
## [1] "Oldenzaal"
# voor de duidelijkheid:

woonplaats <- "Amsterdam"
woonplaats <- "Den Haag"
woonplaats
## [1] "Den Haag"

Je kunt zien dat 26 en 44 niet tussen aanhalingstekens (") zijn aangegeven en "Lisse" wel. Dit komt omdat waarden verschillende types hebben. Het getal 26 is numeriek en heeft daarom de klasse numeric. Lisse is een woord omdat het letters bevat, dit type waarden wordt in programmeertalen een string genoemd. Deze verschillende types worden in R een class genoemd. De belangrijkste en meest gebruikte classes in R zijn:

Class/datatype: Eenvoudige beschrijving: Voorbeeld:
numeric Numerieke waarden, ook met decimalen. Huur = 654.67
character Tekst, alfanumerieke waarden. Land = Spanje
logical Operatoren zoals TRUE of FALSE waarden. 2 > 3 = FALSE
factor Character waarden met een volgorde/hiërarchie. hoog, gemiddeld, laag

results matching ""

    No results matching ""