Tipi e classi di variabili


85

Due domande R:

  1. Qual è la differenza tra il tipo (restituito da typeof) e la classe (restituita da class) di una variabile? La differenza è simile a quella, diciamo, nel linguaggio C ++?
  2. Quali sono i possibili tipi e classi di variabili?

Questo post correlato potrebbe anche fornire informazioni utili: stackoverflow.com/questions/8855589/…
Dominic Comtois

Risposte:


96

In R ogni "oggetto" ha un modee a class. Il primo rappresenta il modo in cui un oggetto viene archiviato in memoria (numerico, carattere, lista e funzione) mentre il secondo rappresenta il suo tipo astratto. Per esempio:

d <- data.frame(V1=c(1,2))
class(d)
# [1] "data.frame"
mode(d)
# [1] "list"
typeof(d)
# list

Come puoi vedere i frame di dati sono archiviati in memoria listma sono avvolti in data.frameoggetti. Quest'ultimo consente l'utilizzo di funzioni membro e di funzioni di sovraccarico come printcon un comportamento personalizzato.

typeof( storage.mode) di solito fornisce le stesse informazioni modema non sempre. Caso in questione:

typeof(c(1,2))
# [1] "double"
mode(c(1,2))
# [1] "numeric"

Il ragionamento alla base di questo può essere trovato qui :

La funzione specifica di R typeof restituisce il tipo di un oggetto R.

La modalità funzione fornisce informazioni sulla modalità di un oggetto nel senso di Becker, Chambers & Wilks (1988) ed è più compatibile con altre implementazioni del linguaggio S

Il link che ho postato sopra contiene anche un elenco di tutti i nativi R basic types(vettori, elenchi ecc.) E tutti compound objects(fattori e data.frames) così come alcuni esempi di come mode, typeofe classsono correlati per ogni tipo.


1
"In R ogni" oggetto "ha una modalità e una classe" fintanto che sono visti dalla prospettiva della struttura della classe S4 OOP. In S3, gli oggetti potrebbero non avere nomi di classi assegnati:oldClass(matrix(1:10, 2,5)) # NULL
Erdogan CEVHER

6

typesi riferisce realmente alle diverse strutture dati disponibili in R. Questa discussione nel manuale R Language Definition può farti iniziare con oggetti e tipi.

D'altra parte, classsignifica qualcos'altro in R rispetto a quello che potresti aspettarti. Dal manuale di definizione della lingua R (fornito con la versione di R):

2.2.4 Classi

R ha un elaborato sistema di classi 1 , controllato principalmente tramite l'attributo class. Questo attributo è un vettore di caratteri contenente l'elenco delle classi da cui un oggetto eredita. Ciò costituisce la base della funzionalità "metodi generici" in R.

È possibile accedere a questo attributo e manipolarlo virtualmente senza limitazioni da parte degli utenti. Non è possibile verificare che un oggetto contenga effettivamente i componenti che i metodi di classe si aspettano. Pertanto, la modifica dell'attributo class dovrebbe essere eseguita con cautela e, quando sono disponibili, dovrebbero essere preferite funzioni di creazione e coercizione specifiche.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.