Zoeken…


Invoering

De klasse van een data-object bepaalt welke functies de inhoud ervan verwerken. Het class -kenmerk is een karaktervector en objecten kunnen nul, een of meer klassen hebben. Als er geen class-kenmerk is, is er nog steeds een impliciete klasse die wordt bepaald door de mode van een object. De klasse kan worden geïnspecteerd met de functie class en kan worden ingesteld of gewijzigd door de class<- functie. Het S3-klassensysteem werd al vroeg in de geschiedenis van S opgericht. Het complexere S4-klassensysteem werd later opgericht

Opmerkingen

Er zijn verschillende functies voor het inspecteren van het "type" van een object. De meest nuttige dergelijke functie is class , hoewel het soms noodzakelijk is om de mode van een object te onderzoeken. Omdat we het hebben over "types", zou je kunnen denken dat typeof nuttig zou zijn, maar over het algemeen zal het resultaat van de mode nuttiger zijn, omdat objecten zonder expliciet "class" -attribuut functieverzending hebben bepaald door de "impliciete klasse" bepaald door hun modus.

vectoren

De meest eenvoudige gegevensstructuur die beschikbaar is in R is een vector. U kunt vectoren van numerieke waarden, logische waarden en tekenreeksen maken met de functie c() . Bijvoorbeeld:

c(1, 2, 3)
## [1] 1 2 3
c(TRUE, TRUE, FALSE)
## [1]  TRUE  TRUE FALSE
c("a", "b", "c")
## [1] "a" "b" "c"

U kunt ook deelnemen aan vectoren met de functie c() .

x <- c(1, 2, 5)
y <- c(3, 4, 6)
z <- c(x, y)
z
## [1] 1 2 5 3 4 6

Een uitgebreidere behandeling van het maken van vectoren is te vinden in het onderwerp "Vectoren maken"

Klassen inspecteren

Aan elk object in R wordt een klasse toegewezen. U kunt class() gebruiken om de klasse van het object te vinden en str() om de structuur te zien, inclusief de klassen die het bevat. Bijvoorbeeld:

class(iris)
[1] "data.frame"

str(iris)
'data.frame':    150 obs. of  5 variables:
 $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
 $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
 $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
 $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
 $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 ...

class(iris$Species)
[1] "factor"

We zien dat iris de klasse data.frame en met str() kunnen we de gegevens erin onderzoeken. De variabele Species in het iris-gegevensframe is van de klassenfactor, in tegenstelling tot de andere variabelen die van klasse numeriek zijn. De functie str() geeft ook de lengte van de variabelen en toont het eerste paar observaties, terwijl de functie class() alleen de klasse van het object biedt.

Vectoren en lijsten

Gegevens in R worden opgeslagen in vectoren. Een typische vector is een reeks waarden die allemaal dezelfde opslagmodus hebben (bijv. Tekensvectoren, numerieke vectoren). Zie ?atomic voor meer informatie over de impliciete atomaire klassen en de bijbehorende opslagmodi: "logical", "integer", "numeric" (synonym "double"), "complex", "character" en "raw" . Veel klassen zijn gewoon een atoomvector met een class bovenaan:

x <- 1826
class(x) <- "Date"
x 
# [1] "1975-01-01"
 x <- as.Date("1970-01-01")
 class(x)
#[1] "Date"
 is(x,"Date")
#[1] TRUE
 is(x,"integer")
#[1] FALSE
 is(x,"numeric")
#[1] FALSE
  mode(x)
#[1] "numeric"

Lijsten zijn een speciaal type vector waarbij elk element van alles kan zijn, zelfs een andere lijst, vandaar de R-term voor lijsten: "recursieve vectoren":

mylist <- list( A = c(5,6,7,8), B = letters[1:10], CC = list( 5, "Z") )

Lijsten hebben twee zeer belangrijke toepassingen:

  • Aangezien functies slechts één waarde kunnen retourneren, is het gebruikelijk om gecompliceerde resultaten in een lijst te retourneren:

    f <- function(x) list(xplus = x + 10, xsq = x^2)
    
    f(7)
    # $xplus
    # [1] 17
    # 
    # $xsq
    # [1] 49
    
  • Lijsten zijn ook de onderliggende fundamentele klasse voor gegevensframes . Onder de motorkap is een gegevensframe een lijst met vectoren die allemaal dezelfde lengte hebben:

    L <- list(x = 1:2, y = c("A","B"))
    DF <- data.frame(L)
    DF
    #   x y
    # 1 1 A
    # 2 2 B
    is.list(DF)
    # [1] TRUE
    

De andere klasse van recursieve vectoren zijn R-expressies, die "taal" -objecten zijn



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow