hllinas2023

1 Preliminares

Los desarrolladores de R han escrito un documento introductorio titulado An Introduction to R. Recommiendo que todos los nuevos usuarios de R lean ese documento. Es importante aclarar que:

  1. En un R script, por ejemplo, el símbolo #, generalmente, se utiliza para introducir un comentario. Todo lo que quede a la derecha de él no se ejecutará.

  2. Todo número decimal debe ser escrito con punto decimal (ejemplo: 3.2) y no con coma (R da un error cuando se escribe 3,2).

  3. Para realizar operaciones, R utiliza funciones como, por ejemplo, mean(). Para utilizar una función deben especificarse unos argumentos, que es lo que escribimos dentro de los paréntesis. En el caso de la función round() hemos especificado dos argumentos: el vector que queremos redondear y el número de decimales del redondeo.

  4. El símbolo <- es el operador para asignar. También se puede utilizar = (o menos frecuente ->), aunque es preferible utilizar el símbolo <-.

A continuación, se explican algunas de las actividades más básicas que se pueden hacer en R.

2 Operaciones matemáticas

Con R se pueden realizar operaciones matemáticas.

4 + 8           #A) Sumar
4*5/6           #B) Multiplicar and dividir
3^2             #C) Potencias
round(10/3, 2)  #D) Redondeando a 2 cifras significativas
sqrt(2)         #E) Raiz cuadarda
exp(1)          #F) Constante de Euler (e)

3 Objetos en R

3.0.1 Definición

Cuando se realiza una asignación se obtiene un objeto, el cual es simplemente una estructura de datos que tiene algunos métodos y atributos. Podemos ver el resultado o contenido de un objeto de varias formas, como se explicará más adelante.

3.0.2 Tipos

Los objetos pueden ser de muchos tipos. Entre otros, los más importantes son:

  1. Integer: Objetos con valores enteros. Convertimos objetos en enteros con la función as.integer() y preguntamos si es entero con is.integer().

  2. Numeric: Objetos que admiten numéros reales (incluyendo, los números \(\pi\) y Euler \(e\)). Convertimos objetos en numéricos con la función as.numeric() y preguntamos si es numérico con is.numericr().

  3. Character: Son los objetos nominales. Convertimos objetos en valores de caracteres con la función as.character() y preguntamos si es de tipo caracter con is.character(). Ejemplos: letras del alfabeto, identificaciones, etc. Todo elemento escrito entre comillas es considerado por R como un caracter.

  4. Factor: Objetos categóricos con niveles. Convertimos objetos en factores con la función as.factor() y preguntamos si es de tipo factor con is.factor(). Ejemplos: Sexo, Raza, etc.

  5. Logical: Objetos con valores lógicos. y solo acepta a elementos como TRUE, FALSE y NA (que son palabras reservadas para R). El símbolo NA significa “not available”, es decir, un valor faltante. Convertimos objetos de tipo lógico con la función as.logical() y preguntamos si es de tipo lógico con is.logical().

  6. Complex: Objetos que corresponden a números complejos. Para definir un número complejo es necesario considerar el número imaginario \(i\) (que es el símbolo utilizado en R para denotar a \(\sqrt{-1}\)). Preguntamos si es de tipo complejo con is.complex().

  7. Vector: Vector, el cual es una colección de uno o más elementos. Preguntamos si un objeto es un vector con la función is.vector().

  8. Matrix (matriz) y Array (arreglo): Ambos son considerados como vectores multidimensionales. Al igual que un vector, únicamente pueden contener datos de un sólo tipo, pero además de largo, tienen más dimensiones. Convertimos objetos en matrices o arreglos con las funciones as.matrix() y as.array(), respectivamente. Preguntamos si es de tipo matrix o arreglo con is.matrix() y is.array(), respectivamente.

  9. List (lista): Al igual que los vectores, las listas son estructuras de datos unidimensionales. Sólo tienen largo, pero a diferencia de los vectores, cada uno de sus elementos puede ser de diferente tipo o incluso de diferente clase, por lo que son estructuras heterogéneas. Convertimos objetos de tipo lista con la función as.list() y preguntamos si es de tipo lista con is.list().

  10. Data frame: Es un caso especial de una lista y representa un conjunto de información expresada en columnas y filas. Convertimos objetos en data frame con la función as.data.frame() y preguntamos si es de tipo data frame con is.data.frame().

  11. Function: Una función es un conjunto de declaraciones organizadas juntas para realizar una tarea específica. Es un objeto, por lo que el usuario de R puede tener el control de la función, junto con los argumentos que pueden ser necesarios para que la función realice las acciones. La sintaxis básica para construir una función en R es:

Nombre_funcion <- function(argumento_1, argumento_2, ...) {
                             Cuerpo de la funcion 
                             }

3.0.3 Variables vs objetos

En la figura de abajo, se muestran las clasificaciones de las variables (desde el lenguaje estadístico), comparado o asociado con la asignación de un tipo de objeto.

3.0.4 Asignar nombres

A veces es recomendable asignar números y valores a variables (llamados “objetos”) para usarlos más adelante. Para ello se utiliza el operador <- (con un espacio a cada lado). El símbolo = también funciona, pero los expertos en R recomiendan reservarlo para especificar argumentos a funciones. Nosotros usaremos <- para la asignación. Una vez que se asigna una variable, su valor se puede imprimir (ver) ingresando simplemente el nombre de la variable. Por ejemplo:

prueba1 <- 4+8             #G) No se ve el valor calculado
prueba1                    #H) Ahora sí se ve
prueba2 <- 5*3; prueba2    #I) Se ve enseguida el valor calculado

4 Vectores

4.0.1 Definición y propiedades

Un vector es es una colección de uno o más datos del mismo tipo y tiene tres propiedades:

  1. Tipo. Un vector tiene el mismo tipo que los datos que contiene. Los vectores son atómicos, pues sólo pueden contener datos de un sólo tipo, no es posible mezclar datos de tipos diferentes dentro de ellos. Puede consultarse la pr[oxima sección, en lo que se refiere a la jerarquía de los vectores.

  2. Largo. Es el número de elementos del vector. Es la única dimensión que tiene esta estructura de datos.

  3. Atributos. Un atributo es una parte de informacion que se puede adjuntar a un vector atómico o cualquier objeto de R. El atributo no afectara a ningún valor del objeto. Podríamos denominar a los atributos como metadata. Los atributos mas comunes de un vector atómico son los nombres, las dimensiones y las clases.

4.0.2 Jerarquía de los vectores

La jerarquía es la siguiente:

\[\mbox{Logical < Integer < Numeric < Complex < Character} \] Por ejemplo, si el vector contiene un elemento caracter considerará a los otros elementos como caracteres.

5 Crear vectores

Todos los objetos anteriores que hemos estado manipulando son vectores de longitud 1. Hay varias maneras de crear objetos que sean vectores con múltiples entradas.

5.0.1 Concatenando

Utilizar la función c (que significa concatenar). El vector de abajo es un ejemplo de tipo numérico (por eso, sale TRUE en el ejemplo de abajo).

v <- c(15, 10, 41, 18, 32, 10, 56, 20)  #J) Un vector
is.integer(v)      #Sale FALSE
is.numeric(v)      #Sale TRUE
is.logical(v)      #Sale FALSE   
is.character(v)    #Sale FALSE
is.complex(v)      #Sale FALSE

El siguiente vector es un ejemplo de uno de tipo character (por eso, sale TRUE en el ejemplo de abajo), porque existe una jerarquía de elementos.

v<- c(12, "azul", 2+1i, pi)  #K) Vector de tipo caracter
is.integer(v)      #Sale FALSE
is.numeric(v)      #Sale FALSE
is.logical(v)      #Sale FALSE   
is.character(v)    #Sale TRUE
is.complex(v)      #Sale FALSE

5.0.2 Con elementos consecutivos

Utilizando la función : (dos puntos). Ejemplo:

3:6       #M) Números consecutivos desde 3 hasta 6. Sale: 3 4 5 6

6 Vectores con patrones: rep

6.0.1 Sintaxis general

La función rep significa repetición. Tiene la sintaxis:

rep(elemento, veces)

Ejemplos:

rep(3,4)          #N) Repetir el 3 cuatro veces. Sale: 3 3 3 3
rep("Mujer",2)    #L) Repetir "Mujer" cinco veces: Sale: "Mujer" "Mujer"

6.0.2 Sintaxis con time() o each()

Este comando también puede repetir vectores. Para lo cual usa la siguiente sintaxis:

rep("vector", "time" o "each")

La condición time se usa cuando se quiere repetir el vector un número determinado de veces y each cuando se requiere repetir los elementos del vector.

A <- 1:2
rep(A, time=3)        #O) Repetir el vector A tres veces. Sale: 1 2 1 2 1 2
rep(A, each=3)        #P) Repetir elementos del vector A tres veces: 1 1 1 2 2 2
rep(A, each=2,time=2) #Q) Elementos de A tres veces; nuevo vector, dos: 1 1 2 2 1 1 2 2 

6.0.3 Sintaxis con c()

Para repetir arbitrariamente los elementos del vector, se usa el comando concatenar c y se indica la veces que se desea repetir cada elemento del vector.

rep(A, c(3,2))   #R) Primer elemento de A tres veces y el segundo, cuatro: 1 1 1 2 2 

6.0.4 Sintaxis con length

La función rep también se puede usar para repetir el vector y especificar una determinada dimension con el argumento lentgh. La sintaxis para estos casos es el siguiente:

rep("vector", "time" o "each", "length")

Ejemplo:

rep(A, each=2, length=3)  #S) Repetir elementos A dos veces, con dimensión tres: 1 1 2

Si no se hubiese puesto la condición length el vector tendría una dimensión de 4, pero como se especificó la longitud, sólo se consideraron los elementos hasta llegar a una dimensión de 3.

7 Vectores con patrones: seq

7.0.1 Sintaxis general

La función seq significa secuencia. Tiene los argumentos from, to, by y length.out que se pueden combinar de acuerdo a lo que se necesite. La sintaxis geenral es:

seq(from="inicio", to="final")

Ejemplos de secuencias:

seq(from = 3, to = 6)   #A) Secuencia consecutiva de 3 a 6. Sale: 3 4 5 6
seq(3, 6)               #B) Sale igual que el anterior

7.0.2 Sintaxis con by

La opción by es el comando en donde se tendrá que indicar la razón aritmética (que puede ser positiva o negativa). Cuando la razón es negativa, el número inicial debe ser mayor que el número final.

seq(7, 10, by = 1)     #C) Desde 7 a 10, aumentando de 1 en 1. Sale:  7  8  9 10
seq(10, 2, by = -2)    #D) Desde 10 a 2, disminuyendo de 2 en 2. Sale: 10  8  6  4  2

7.0.3 Sintaxis con length.out

Se utiliza cuando deseamos tener una determinada dimensión y omitir la razón.

seq(9, by=-1, length.out=3)  #E) De tamaño 3 (desde 9, disminuyendo de 1 en 1): 9 8 7

7.0.4 Sintaxis con c()

Para concatenar elementos, como se explicó antes, se usa el comando c y se puede aplicar también en secuencias.

A <- seq(2, 6, by=2)  #F) Secuencia 2 4 6 
c(A, 3)               #G) Sale: 2 4 6 3
c(1,A, 7)             #H) Sale: 1 2 4 6 7

8 Vectores predeterminados

Los vectores LETTERS y letters tiene las 26 letras del alfabeto inglés en mayúsculas y minúsculas, respectivamente.

LETTERS    #I) Sale: "A" "B" "C" ..."X" "Y" "Z"
letters    #J) Sale: "a" "b" "c" ..."x" "y" "z"

9 Indexar vectores

A veces no queremos todo el vector, sino solo una parte de él. Esto se puede llevar a cabo con el operador corchete []. Ejemplo:

B <- c(15, 10, 41, 18, 32)
B[2]              #F) Solo valor en segunda posición de B. Sale: 10
B[3:4]            #G) Solo valores en posiciones 3 y 4. Sale:  41 18 
B[c(1, 3, 5)]     #H) Solo valores en posiciones 1, 3, 4 y 8  de B. Sale: 15 41 32
B[-c(1, 3, 5)]    #I) Quitar valores en posiciones 1, 3, 4 y 8  de B. Sale: 10 18
LETTERS[2:3]      #J) Solo letras mayúsculas en posiciones 2, y 3. Sale: "B" "C" 
letters[-(2:25)]  #K) Solo dejar la primera y la última letra minúscula. Sale: "a" "z"

10 Funciones y expresiones

En R, una función toma argumentos como entrada y devuelve un objeto como salida. Hay funciones para hacer todo tipo de operaciones. A continuación, mostramos algunos ejemplos .

x <- 1:2
sum(x)               #L) Suma de las componentes del vector. Sale: 3
length(x)            #M) Longitud del vector. Sale: 2
1/x                  #N) Inverso multiplicativo de cada componente de x: 1.0 0.5
exp(x)               #O) Exponencial de cada componente de x: 2.718282 7.389056 
round(exp(x), 2)     #P) Redonder a 2 cifras significativas. Sale: 2.72 7.39

11 Ejercicios

Crear un nuevo documento R Markdown, realizando las siguientes actividades:

  1. Revisar algunos atributos y funciones y explicar lo que se obtiene de la salida.

Bibliografía

Consultar el documento RPubs :: Enlace y materiales de ayuda.

 

 
If you found any ERRORS or have SUGGESTIONS, please report them to my email. Thanks.