Está en la página 1de 12

Practica 1 Lenguaje R

Temario
A- Tipos de datos básicos y estructuras de datos
B- Atributos

A- Tipos de datos básicos y estructuras de datos

Para poder utilizar R, es necesario entender los tipos de datos básicos y las
estructuras de datos y saber cómo manejarlos.

 En R todo es un objeto.
 Existen varios tipos de objetos.
 El más simple y básico es el vector (atómico).

Vector Atómico

Se denomina atómico porque es creado a partir de los tipos de datos básicos.

Todos los elementos de un vector atómico deben ser del mismo tipo.

Dentro de R podemos encontrar 6 tipos de datos básicos:

 character: “a”, “swc”


 numeric: 2, 15.5
 integer: 2L # Para indicar que es entero se teclea la letra L (Mayúscula)
 logical: TRUE, FALSE
 complex: 1+4i

Para escribir un número complejo utilizaremos “i” para su parte imaginaria


> x = 32 + 4i
Si queremos un número complejo sin parte imaginaria, la hacemos igual a cero
> y = -2 + 0i
 raw # Sin Procesar

Los cuatro tipos más importantes de vectores atómicos son lógico, entero, doble
y carácter. Los de tipo raw y complejo son raramente usados durante el análisis
de datos, por lo tanto, no discutiremos sobre ellos aquí.

varTexto="Texto" varTexto<-"Texto"
varBoolean=TRUE varBoolean<-TRUE Sensibilidad
varNum=2 varNum<-2 Mayusculas -
varInt=2L varInt<-2L Minusculas

L.I. Raymundo Lumbreras López Hoja 1 de 12


Practica 1 Lenguaje R

Para crear vectores de más de un elemento utilizamos la función c() (Significa


combinar o concatenar)

Ejemplo:

estaciones<-c('Toreadora','La Virgen','Chirimachay','Tres
Cruces','Balzaín','Sayausí')
estaciones
## [1] "Toreadora" "La Virgen" "Chirimachay" "Tres Cruces" "Balzaín"
## [6] "Sayausí"

## [1] Desplegando desde el 1er elemento del vector


## [6] Desplegando numero de elemento + 1 del ultimo anterior

coordsX <-c(697618.73,701110.74,705703.88,695540.08,718267.1,714620)
coordsX
## [1] 697618.7 701110.7 705703.9 695540.1 718267.1 714620.0

Otra forma de crear vectores es por medio del operador :, el cual crea una
secuencia de números desde un valor inicial a un valor final (con pasos o
intervalos de 1): numeroInicial:numeroFinal

Ejemplo:

secuencia1 <- 10:20


secuencia1
## [1] 10 11 12 13 14 15 16 17 18 19 20
secuencia2 <- 100001:100101
secuencia2
## [1] 100001 100002 100003 100004 100005 100006 100007 100008 100009
100010
## [11] 100011 100012 100013 100014 100015 100016 100017 100018 100019
100020
## [21] 100021 100022 100023 100024 100025 100026 100027 100028 100029
100030
## [31] 100031 100032 100033 100034 100035 100036 100037 100038 100039
100040
## [41] 100041 100042 100043 100044 100045 100046 100047 100048 100049
100050
## [51] 100051 100052 100053 100054 100055 100056 100057 100058 100059
100060
## [61] 100061 100062 100063 100064 100065 100066 100067 100068 100069
100070
## [71] 100071 100072 100073 100074 100075 100076 100077 100078 100079
100080
## [81] 100081 100082 100083 100084 100085 100086 100087 100088 100089
100090
## [91] 100091 100092 100093 100094 100095 100096 100097 100098 100099
100100
## [101] 100101

L.I. Raymundo Lumbreras López Hoja 2 de 12


Practica 1 Lenguaje R

L.I. Raymundo Lumbreras López Hoja 3 de 12


Practica 1 Lenguaje R

R provee varias funciones para examinar las características de los objetos que
creamos.

 class() - Qué tipo de objeto es?


 typeof() - Qué tipo de dato es?
 length() - de que tamaño es (vectores y listas)?
 attributes() - tiene el objeto algún metadato?

Ejemplos:

length(estaciones)
## [1] 6
typeof(estaciones)
## [1] "character"
length(coordsX)
## [1] 6
typeof(coordsX)
## [1] "double"

text <- c("Hello", "World")


length(text)
## [1] 2
typeof(text)
## [1] "character"
logic <- c(TRUE, FALSE, TRUE)
length(logic)
## [1] 3
typeof(logic)
## [1] "logical"

Qué pasa cuando mezclas elementos de diferentes tipos en un vector?

vector1 <- c(-1.7, "a", TRUE)

R intenta crear el vector resultante de forma que todos los elementos sean del
mismo tipo. A esto se le denomina Coerción

vector1 <- c(-1.7, "a")


typeof(vector1)
## [1] "character"
vector1
## [1] "-1.7" "a"
vector2 <- c(TRUE, 4)
typeof(vector2)
## [1] "double"
vector2

L.I. Raymundo Lumbreras López Hoja 4 de 12


Practica 1 Lenguaje R

## [1] 1 4

Todos los elementos de un vector atómico deben ser del mismo tipo, así que
cuando intentamos combinar elementos de diferentes tipos ellos deben ser
Coercionados al tipo más flexible.

Los tipos de datos desde el menos al mas flexible son: logical, integer, double, y
character.

Ejercicios:

Según las reglas de coerción que resultado producirán las siguientes


instrucciones:

c(1, FALSE)
## [1] 1 0
c("a", 1)
## [1] "a" "1"
c(TRUE, 1L)
## [1] 1 1

Estructuras de datos

R tiene varias estructuras de datos. Entre las más utilizadas están:

 Vectores atómicos
 Listas
 Matrices y Arrays
 Factores
 Data frames

Listas

Similares a los vectores por cuanto agrupan datos en un conjunto unidimensional,


sin embargo las listas pueden contener elementos de cualquier tipo (incluso otras
listas).

Cada uno de los elementos de la lista puede a su vez contener varios valores
individuales.

L.I. Raymundo Lumbreras López Hoja 5 de 12


Practica 1 Lenguaje R

Para crear este tipo de objeto se usa la función list() separando cada elemento
con una coma.

L.I. Raymundo Lumbreras López Hoja 6 de 12


Practica 1 Lenguaje R

list1 <- list(1L,"a",TRUE,0.5)


list1
## [[1]]
## [1] 1
##
## [[2]]
## [1] "a"
##
## [[3]]
## [1] TRUE
##
## [[4]]
## [1] 0.5

list2 <- list(100:130, "R", list(TRUE, FALSE))


list2
## [[1]]
## [1] 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
116
## [18] 117 118 119 120 121 122 123 124 125 126 127 128 129 130
##
## [[2]]
## [1] "R"
##
## [[3]]
## [[3]][[1]]
## [1] TRUE
##
## [[3]][[2]]
## [1] FALSE

Las listas son utilizadas para construir estructuras de datos más complicadas,
como los data frames.

Matrices y Arrays

Un array es una estructura de datos multidimensional. Un array es la


generalización de una matriz de dos dimensiones al caso multidimensional. Su
definición general es de la forma array(datos, dimensiones)

Las matrices son un caso especial de arrays, que tiene 2 dimensiones.

Matrices y arrays se crean con las funciones matrix() y array() respectivamente.

# dos argumentos para definir filas y columnas


a <- matrix(1:6, ncol = 3, nrow = 2)
a
## [,1] [,2] [,3]
## [1,] 1 3 5

L.I. Raymundo Lumbreras López Hoja 7 de 12


Practica 1 Lenguaje R

## [2,] 2 4 6
# Un vector como argumento para especificar las dimensiones del array
b <- array(1:12, c(2, 3, 2))
b
## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 7 9 11
## [2,] 8 10 12

Ahora crearemos una matriz a partir del vector estaciones que contiene nombres
de estaciones

Una matriz en R es un conjunto de objetos indizados por filas y columnas. Un


array en R es lo mismo, salvo
que puede tener más de dos dimensiones.

La sintaxis general de la orden para crear una matriz es la siguiente:

matrix(data, nrow, ncol, byrow=F)

donde: 

data datos que forman la matriz 


nrow número de filas de la matriz
ncol número de columnas de la matriz
Los datos se colocan por filas o por
byrow columnas según se van leyendo. Por
defecto se colocan por columnas.

m <- matrix(estaciones, nrow = 2)


m
## [,1] [,2] [,3]
## [1,] "Toreadora" "Chirimachay" "Balzaín"
## [2,] "La Virgen" "Tres Cruces" "Sayausí"
m <- matrix(estaciones, nrow = 2, byrow = TRUE)
m
## [,1] [,2] [,3]
## [1,] "Toreadora" "La Virgen" "Chirimachay"
## [2,] "Tres Cruces" "Balzaín" "Sayausí"

L.I. Raymundo Lumbreras López Hoja 8 de 12


Practica 1 Lenguaje R

Factores

Un factor es un vector que puede contener solo valores predefinidos.

Se utiliza para almacenar datos categóricos o para denotar algún tipo de


clasificación.

Tienen asociada una descripción a un valor numérico.

Esto permite reducir el espacio en disco para el almacenamiento.

gender <- factor(c("male", "female", "female", "male"))


typeof(gender)
## [1] "integer"
attributes(gender)
## $levels
## [1] "female" "male"
##
## $class
## [1] "factor"

Para visualizar como r almacena la información de la variable tipo factor se usa el


comando unclass().

unclass(gender)
## [1] 2 1 1 2
## attr(,"levels")
## [1] "female" "male"
gender
## [1] male female female male
## Levels: female male
as.character(gender)
## [1] "male" "female" "female" "male"

Los factores son ?tiles cuando conocemos los posibles valores que una variable
puede tomar.

datos_genero <- c("m", "m", "m")


factor_genero <- factor(datos_genero, levels = c("m", "f"))
table(factor_genero)
## factor_genero
## m f
## 3 0

Data frames

El tipo de objeto data frame es una versión de dos dimensiones de una lista.

Esta estructura es la más utilizada para el almacenamiento de datos.

L.I. Raymundo Lumbreras López Hoja 9 de 12


Practica 1 Lenguaje R

Esta estructura es equivalente a una hoja de cálculo en Excel.

Los data frames agrupan vectores (del mismo tamaño), donde cada uno de ellos
representa una columna del data frame, así pues cada columna puede ser de un
tipo diferente.

Creación de data frames

Para crear un data frame utilizamos la función data.frame(), la cual toma vectores
como entrada:

df <- data.frame(descripcion = c("Toreadora", "Chirimachay", "La


Virgen"),
cuenca = c("Quinoas", "Quinoas", "Quinoas"), id= c(1, 2, 3))
df
## descripcion cuenca id
## 1 Toreadora Quinoas 1
## 2 Chirimachay Quinoas 2
## 3 La Virgen Quinoas 3
typeof(df)
## [1] "list"
class(df)
## [1] "data.frame"
str(df)
## 'data.frame': 3 obs. of 3 variables:
## $ descripcion: Factor w/ 3 levels "Chirimachay",..: 3 1 2
## $ cuenca : Factor w/ 1 level "Quinoas": 1 1 1
## $ id : num 1 2 3

El tipo factor es uno de los “preferidos” de R, por lo tanto, cualquier dato que
corresponda inicialmente a texto podría ser interpretado por R como un factor. Sin
embargo, esto no siempre es lo que se desea y para evitar la creación
(conversión) a este tipo en las columnas del data frame podemos usar el
argumento stringsAsFactors = FALSE

df <- data.frame(descripcion = c("Toreadora", "Chirimachay", "La


Virgen"),
cuenca = c("Quinoas", "Quinoas", "Quinoas"), id= c(1, 2, 3),
stringsAsFactors = FALSE)
df
## descripcion cuenca id
## 1 Toreadora Quinoas 1
## 2 Chirimachay Quinoas 2
## 3 La Virgen Quinoas 3
str(df)
## 'data.frame': 3 obs. of 3 variables:
## $ descripcion: chr "Toreadora" "Chirimachay" "La Virgen"
## $ cuenca : chr "Quinoas" "Quinoas" "Quinoas"
## $ id : num 1 2 3

L.I. Raymundo Lumbreras López Hoja 10 de 12


Practica 1 Lenguaje R

Cómo acceder a las columnas de mi data frame?

df$descripcion
## [1] "Toreadora" "Chirimachay" "La Virgen"
df$id
## [1] 1 2 3
desc <- df$descripcion
desc
## [1] "Toreadora" "Chirimachay" "La Virgen"
class(desc)
## [1] "character"
typeof(desc)
## [1] "character"

B- Atributos

Varios objetos R tienen atributos, estos representan información extra o metadata


del objeto.

Los atributos pueden ser identificados por un nombre (e.g names) y están
asociados a un objeto R (lista).

Estos atributos no afectan los valores del objeto como tal sino que añaden
información del objeto R para facilitar su manipulación.

Por ejemplo es común que el objeto de tipo data.frame tenga asociado los
nombres de sus filas y columnas.

Los atributos pueden ser accedidos individualmente con attr(), o a todos (como
una lista) con attributes().

y <- 1:10
attr(y, "my_attribute") <- "This is a vector"
attr(y, "my_attribute")
## [1] "This is a vector"

Existen atributos que R incluye por defecto, los más importantes son:

-Names, un vector de caracteres que da a cada elemento un nombre -Dimensions,


Utilizado para transformar vectores en matrices y arreglos

Cada uno de estos atributos tienen una función de acceso tanto para asignar
como para recuperar sus valores. Cuando trabajamos con estos atributos, se debe
utilizar names(x), dim(x).

L.I. Raymundo Lumbreras López Hoja 11 de 12


Practica 1 Lenguaje R

A continuación vamos a asignar nombres al vector coordsX.

names(coordsX) ## NULL
## NULL
names(coordsX) <- c("E1", "E2", "E3", "E4", "E5", "E6")
names(coordsX)
## [1] "E1" "E2" "E3" "E4" "E5" "E6"
attributes(coordsX)
## $names
## [1] "E1" "E2" "E3" "E4" "E5" "E6"
coordsX + 1
## E1 E2 E3 E4 E5 E6
## 697619.7 701111.7 705704.9 695541.1 718268.1 714621.0

Anteriormente modificamos los nombres (names) del vector de coordenadas. Así


también otro atributo es la dimensión (dim). Se puede transformar el vector en
arreglo –matriz– de n dimensiones.

dim(coordsX) <- c(2, 3)


coordsX
## [,1] [,2] [,3]
## [1,] 697618.7 705703.9 718267.1
## [2,] 701110.7 695540.1 714620.0
dim(coordsX) <- c(3, 2)
coordsX
## [,1] [,2]
## [1,] 697618.7 695540.1
## [2,] 701110.7 718267.1
## [3,] 705703.9 714620.0
dim(coordsX) <- c(1, 2, 3)
coordsX
## , , 1
##
## [,1] [,2]
## [1,] 697618.7 701110.7
##
## , , 2
##
## [,1] [,2]
## [1,] 705703.9 695540.1
##
## , , 3
##
## [,1] [,2]
## [1,] 718267.1 714620

L.I. Raymundo Lumbreras López Hoja 12 de 12