2011-06-06 17 views
74

dos R preguntas:Tipos y clases de variables

  1. ¿Cuál es la diferencia entre el tipo (devuelto por typeof) y la clase (devuelto por class) de una variable? ¿La diferencia es similar a la de, por ejemplo, el lenguaje C++?
  2. ¿Cuáles son los posibles tipos y clases de variables?
+0

Esta publicación relacionada también puede proporcionar información útil: http://stackoverflow.com/questions/8855589/a-comprehensive-survey-of-the-types-of-things-in-r-mode-and-class- y tipo –

Respuesta

87

En R cada "objeto" tiene un mode y un class. El primero representa cómo se almacena un objeto en la memoria (numérico, carácter, lista y función) mientras que el último representa su tipo abstracto. Por ejemplo:

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

Como se puede ver tramas de datos se almacenan en la memoria como list pero están envueltos en data.frame objetos. Este último permite el uso de funciones miembro así como funciones de sobrecarga como print con un comportamiento personalizado.

typeof (storage.mode) generalmente dará la misma información que mode pero no siempre. El caso en cuestión:

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

El razonamiento detrás de esto se puede encontrar here: función específica

El R typeof devuelve el tipo de un objeto R

Función modo de da información sobre el modo de un objeto en el sentido de Becker, Chambers & Wilks (1988), y es más compatible con otras implementaciones del lenguaje S

El enlace que publiqué anteriormente también contiene una lista de todas las R basic types nativas (vectores, listas, etc.) y todos compound objects (factores y data.frames) así como algunos ejemplos de cómo mode, typeof y class están relacionados para cada tipo.

4

type realmente se refiere a las diferentes estructuras de datos disponibles en R. Esta discusión en el R Language Definition manual puede empezar en los objetos y tipos.

Por otro lado, class significa algo más en R que lo que puede esperar. De el manual R Language Definition (que viene con su versión de I):

2.2.4 Clases

R tiene un sistema de clases elaborada , controlado principalmente a través del atributo de clase. Este atributo es un vector de caracteres que contiene la lista de las clases heredadas por un objeto. Esto forma la base de la funcionalidad de "métodos genéricos" en R.

Este atributo se puede acceder y manipular prácticamente sin restricción por parte de los usuarios. No se verifica que un objeto realmente contenga los componentes que los métodos de clase esperan. Por lo tanto, la alteración del atributo de clase se debe hacer con precaución, y cuando estén disponibles, se deben preferir funciones específicas de creación y coerción.

Cuestiones relacionadas