Capítulo 4 Objetos

R es un programa ‘orientado a objetos’: variables, datos, funciones, resultados, etc., se guardan en la memoria RAM en forma de objetos con un nombre específico sin usar archivos temporales.

Cada clase de objeto tiene diferentes atributos que determinan la forma en que trabajan dentro de R, es decir, define cuáles funciones se le pueden aplicar.

Estos objetos se pueden modificar o manipular con operadores y funciones –que a su vez son objetos–.

Bajo este término se esconde la simplicidad y flexibilidad de R.

Algunas de las clases más comunes de objetos son: ‘integer’, ‘numeric’, ‘character’, ‘logical’ (son vectores), ‘matrix’, ‘data.frame’, ‘list’ y ‘function’.

4.1 Tipo de objetos

La cantidad de clases de objetos es muy grande y crece permanentemente a medida que se crean nuevos paquetes.

Objeto Dimensión o largo Tipo de elementos Ejemplo
Vector length() similares
Matriz dim() similares
Marco de datos dim() diferentes
Lista length() diferentes

4.2 Vectores

Un vector es una colección de uno o más objetos del mismo tipo (números o caracteres pero no ambos). Un escalar también es un vector en R.

4.2.1 c()

  • Crea un vector

  • Según sus elementos será la clase del vector: character, numeric, integer, logical

  • Cada elemento va separado por una coma

  • Con la función class() compruebo que tipo de objeto es

4.3 Vector

## [1] 15 16 17 19
## [1] "numeric"
## [1] 7.5 8.0 8.5 9.5
## [1] "numeric"

4.4 Vector

Para el caso de “palabras” (“strings”), la clase “character” es la que utiliza R para manejar este tipo de objetos. Al igual que en la mayoría de los lenguajes de programación, R utiliza las comillas dobles (") o simples (’) para delimitar un string.

## [1] "15" "16" "17" "19"
## [1] "character"
## [1] "lunes"     "martes"    "miércoles" "viernes"
## [1] "character"

4.5 Ejemplo vectores

Comparemos algunas características de R con otros software estadísticos como Stata y SPSS. Esta tabla la tomé de Princeton University, la traduje y le agregué el año de creación.

Características R SPSS Stata
Año 1993 1968 1985
Curva aprendizaje Muy empinada Plana Empinada
Interfaz Programación Point and click Programación/Point and click
Manipulación de datos Avanzada Moderada Avanzada
Análisis de datos Potente/Versátil Potente Potente
Gráficos Excelentes Muy buenos Muy buenos
Software libre 1 0 0
Costo Gratuito Muy costoso Accesible
## [1] 3
## [1] "numeric"

4.6 Coerción

Como mencionamos anteriormente, estos elementos deben ser todos de la misma clase. Si se combinan objetos de diferente clase, R reasigna los elementos a la clase apropiada. Si contiene números y texto el vector será de clase character.

La coerción es necesaria para el funcionamiento correcto de R. Al mismo tiempo puede ser una fuente de errores si no se tiene en cuenta.

Un texto sin comillas en R es un objeto (siempre que cumpla las reglas de un nombre de objeto).

4.7 Vectorización

R vectoriza las operaciones de manera que si sumo un número a un vector numérico, a cada elemento del vector le sumará ese número. Esta propiedad es una ventaja ya que permite evitar loops en muchas de situaciones y de esta manera se obtiene un código más ‘limpio’ y eficiente.

## [1] -1  0  1  2  3  4

El operador : sirve para generar vectores numéricos

## [1] 4 5 6 7 8 9
## [1] -3  0  3  6  9 12

4.8 Funciones descriptivas de un vector numérico

length(x): devuelve la cantidad de elementos de x

sort(x, decreasing = F): ordena los elementos de manera creciente

sum(x): devuelve la suma de los elementos de x

max(x): máximo

min(x): mínimo

mean(x): promedio aritmético de x

median(x): mediana de x

sd(x): desvío estándar de x

var(x): varianza de x

summary(x): resumen descriptivo de x (mínimo, máximo, media, mediana, cuartiles)

4.9 Data frame

  • Puede verse como un conjunto de vectores de diferente tipo pero de igual largo.
## [1] "data.frame"
anio software_libre costo
1993 TRUE gratuito
1968 FALSE costoso
1985 FALSE accesible
  • En un conjunto de datos, cada variable/columna es un vector.
## [1] "numeric"
## [1] "logical"
## [1] "factor"
  • En general el data frame vendrá dado en un archivo.

4.11 Guardar objeto en formato RData

El primer elemento debe ser un objeto. Podrían ser más de uno.

Es necesario nombrar el argumento ‘file’ definiendo ruta y nombre de archivo.

Si en file solo se define el nombre del archivo, se guarda en el directorio de trabajo actual: getwd()

El nombre del objeto y el archivo pueden coincidir, pero no necesariamente.

Un archivo Rdata es más liviano que cualquier otro formato externo.