Tipos básicos en R

Como programador, cuando me acerco a un lenguaje hay un primer elemento básico antes de conocer la sintaxis: los tipos de datos. R es un lenguaje de tipado dinámico, para entendernos, no es necesario declarar el tipo de una variable sino que esta se ajustará internamente su tipo en función del valor asignado y el contexto, realizando las conversiones, pudiendo perder información en el proceso (si convertimos un doble a entero perdemos su parte decimal).

En R tenemos una serie de tipos básicos que no manejaremos como tales, sino como vectores, es decir, si asignamos un valor a una variable tal que:

> x = 1

lo que tenemos es un vector de longitud 1 de elementos de  tipo “double“.

En R tenemos los siguientes tipos básicos de vectores (podemos hacer typeof(vector) para obtener el tipo de un vector):

  • logical, para valores booleanos (TRUE, FALSE)
  • integer
  • double, números decimales
  • complex, números complejos
  • character, cadena de texto
  • raw, bytes puros y duros

Podemos convertir un tipo a otro utilizando las funciones “as“: tenemos as.logical(), as.integer(), as.double(), as.complex() e incluso as.raw().

Logical

Puede tomar los valores TRUE o FALSE, y se corresponde con los resultados de las comparaciones

  • x == 0: TRUE
  • x != 0: FALSE

Es decir, si tomamos un dato de otro tipo y hacemos “as.logical()” nos dará el resultado de esa comparación.

Integer

Por defecto R almacenará todos los números racionales como “double” pero podemos forzar el tipo con “as.integer()“.

Double

No hace falta que lo comentemos, ¿no?.

Complex

Para escribir un número complejo utilizaremos “i” para su parte imaginaria. Por ejemplo:

> x = 32 + 4i

Si queremos un número complejo sin parte imaginaria, la hacemos igual a cero:

> y = -2 + 0i

En otro post puede que entre en más detalle, pero por ahora os aviso que si convertís un número complejo a un número real con “as” os quedaréis con la parte real, no el módulo.

Character

Cadenas de texto de cualquier longitud (bueno, en realidad no conozco cual sería el máximo). El tipo básico es la propia cadena, no el carácter , es decir para “casa” no tenemos un vector (‘c’,’a’,’s’,’a’) si no (‘casa’). Podemos convertir de número a cadena de texto sin problemas con la función “as.character

Raw

Lo dejo para otro post cuando haya trabajado a fondo con este tipo.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s