Ricerca…


introduzione

La classe di un oggetto dati determina quali funzioni elaboreranno i suoi contenuti. L'attributo class è un vettore di caratteri e gli oggetti possono avere zero, una o più classi. Se non ci sono attributi di classe, ci sarà ancora una classe implicita determinata dalla mode un oggetto. La classe può essere ispezionata con la class funzione e può essere impostata o modificata dalla class<- function. Il sistema di classe S3 è stato stabilito all'inizio della storia di S. Il più complesso sistema di classe S4 è stato istituito in seguito

Osservazioni

Ci sono diverse funzioni per ispezionare il "tipo" di un oggetto. La funzione utile più utile è la class , anche se a volte è necessario esaminare la mode di un oggetto. Dato che stiamo discutendo di "tipi", si potrebbe pensare che typeof sarebbe utile, ma generalmente il risultato della mode sarà più utile, perché gli oggetti senza un "attributo "di classe esplicito avranno dispatch di funzione determinato dalla" classe implicita "determinata dalla loro modalità.

Vettori

La struttura dati più semplice disponibile in R è un vettore. È possibile creare vettori di valori numerici, valori logici e stringhe di caratteri utilizzando la funzione c() . Per esempio:

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

Puoi anche unirti ai vettori usando la funzione c() .

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

Un argomento più elaborato su come creare vettori può essere trovato nell'argomento "Creazione di vettori"

Ispeziona le classi

Ad ogni oggetto in R viene assegnata una classe. Puoi usare class() per trovare la classe dell'oggetto e str() per vedere la sua struttura, incluse le classi che contiene. Per esempio:

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"

Vediamo che l'iride ha la classe data.frame e usando str() ci permette di esaminare i dati all'interno. La variabile Specie nel frame di dati dell'iride è di classe, in contrasto con le altre variabili che sono di classe numerica. La funzione str() fornisce anche la lunghezza delle variabili e mostra la prima coppia di osservazioni, mentre la funzione class() fornisce solo la classe dell'oggetto.

Vettori ed elenchi

I dati in R sono memorizzati in vettori. Un tipico vettore è una sequenza di valori che hanno tutti la stessa modalità di memorizzazione (ad esempio, vettori di caratteri, vettori numerici). Vedere ?atomic per i dettagli sulle classi implicite atomiche e le loro modalità di memorizzazione corrispondenti: "logical", "integer", "numeric" (synonym "double"), "complex", "character" e "raw" . Molte classi sono semplicemente un vettore atomico con un attributo di class in cima:

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"

Le liste sono un tipo speciale di vettore in cui ogni elemento può essere qualsiasi cosa, anche un altro elenco, da cui il termine R per le liste: "vettori ricorsivi":

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

Le liste hanno due usi molto importanti:

  • Poiché le funzioni possono solo restituire un singolo valore, è comune restituire risultati complicati in un elenco:

    f <- function(x) list(xplus = x + 10, xsq = x^2)
    
    f(7)
    # $xplus
    # [1] 17
    # 
    # $xsq
    # [1] 49
    
  • Le liste sono anche la classe fondamentale sottostante per i frame di dati . Sotto il cofano, un frame di dati è un elenco di vettori che hanno tutti la stessa lunghezza:

    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
    

L'altra classe di vettori ricorsivi sono le espressioni R, che sono "linguaggio" - oggetti



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow