Dos R preguntas:

  1. ¿Cuál es la diferencia entre el tipo devuelto por typeof) y la clase (devuelto por class) de una variable? Es la diferencia similar a la que, por ejemplo, en lenguaje C++?
  2. ¿Cuáles son los posibles tipos y clases de variables?
InformationsquelleAutor Leo | 2011-06-06

2 Comentarios

  1. 95

    En R cada «objeto» tiene un mode y un class. El primero representa cómo un objeto se almacena en la memoria (numérico, carácter, lista y función), mientras que el segundo 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, los marcos de datos se almacenan en la memoria como list pero que están envueltos en data.frame objetos. Este último permite el uso de funciones miembro, así como la sobrecarga de funciones, tales como print con un comportamiento personalizado.

    typeof(storage.mode) le suele dar la misma información que mode pero no siempre. Caso en cuestión:

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

    El razonamiento detrás de esto puede ser encontrado aquí:

    La R función específica typeof devuelve el tipo de un R objeto

    Función modo 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 he publicado anteriormente también contiene una lista de todos los nativos R basic types (vectores, listas, etc.) y todos compound objects (factores y datos.marcos), así como algunos ejemplos de cómo mode, typeof y class están relacionados para cada tipo.

    • «En R cada «objeto» tiene un modo y una clase» mientras que se ve desde el S4 programación orientada a objetos estructura de la clase de perspectiva. En el S3, los objetos no pueden tener asignados los nombres de clase: oldClass(matrix(1:10, 2,5)) # NULL
  2. 6

    type realmente se refiere a las diferentes estructuras de datos disponibles en R. Este debate en el R el Lenguaje de Definición de manual puede empezar en los objetos y los tipos.

    Por otro lado, class significa algo más en R de lo que usted puede esperar. De
    el R Definición Del Lenguaje manual (que vino con su versión de R):

    2.2.4 Clases de

    R tiene un elaborado sistema de la clase1, principalmente controlado a través del atributo de clase. Este atributo es un personaje vector que contiene la lista
    de clases que un objeto hereda. Esto forma la base de los «métodos genéricos» funcionalidad en R.

    Este atributo se puede acceder y manipular prácticamente sin restricción por parte de los usuarios. No hay ninguna comprobación de que un objeto contiene los componentes que los métodos de la clase de esperar. Por lo tanto, la alteración de la clase de atributo se debe hacer con precaución, y cuando están disponibles específicos de la creación y la coacción de las funciones debe ser preferido.

Dejar respuesta

Please enter your comment!
Please enter your name here