Está en la página 1de 43

Universidad del Sinú

Cartagena

Análisis Estadístico de Datos


con RStudio

2020
Básicas Exactas - UniSinú 0

2
Capítulo 1
Introducción a R y RStudio

1.1. ¾Qué es R?
R software es un entorno y lenguaje de programación diseñado para el aná-
lisis estadístico y gráco. R está formado por un conjunto de herramientas
exibles que pueden ampliarse fácilmente mediante paquetes, librerías o de-
niendo nuestras propias funciones, además es gratuito y de código abierto.

R se presentó a la comunidad académica en 1993 de la mano de sus creadores


Robert Gentleman y Ross Ihaka, que desarrollaron la herramienta en el
Departamento de Estadística de la Universidad de Auckland. Sin embargo la
base de sus orígenes se encuentra en el desarrollo del lenguaje S.

R es producto de la losofía Open Source. Desde sus inicios una extensa co-
munidad de usuarios y programadores de alto nivel contribuye a desarrollar
nuevas funciones, paquetes y actualizaciones que son rápidamente accesibles
a todo público. Esto convierte a R software en una herramienta estadística
estable, conable y a la vanguardia, ya que está sometida a una actualización
permanente.

R un lenguaje orientado a objetos, es decir que, las variables, datos, funciones,


resultados, se guardan en la memoria activa del computador en forma de
objetos con un nombre especíco. Esta característica permite aplicar cálculos
a un conjunto de valores a la vez, sin la necesidad de utilizar un algoritmo más
sosticado como una función bucle. Además, R un lenguaje interpretado, R

3
Básicas Exactas - UniSinú 1

es un lenguaje interpretado(como Pythona) y no compilado (como C). Esto


signica que los comandos escritos en el teclado son ejecutados directamente
sin necesidad de construir un código ejecutable. Este aspecto facilita mucho
el trabajo con el análisis de datos complejos.

1.2. ¾Por qué utilizar R?


A continuación, se listan algunas razones por las cuales R es una excelente
opción para procesar datos:

R tiene una comunidad académica detrás que provee una muy buena
documentación en línea.

R (junto con sus paquetes) puede implementar una gran variedad de


técnicas estadísticas y grácas.

R forma parte de un proyecto colaborativo y abierto. Sus usuarios pue-


den publicar paquetes que extienden su conguración básica. Existe un
repositorio ocial de paquetes: Comprehensive R Archive Network o
CRAN.
R es empleado por investigadores de diferentes áreas del conocimiento.

R es uno de los paquetes estadísticos de mayor crecimiento en su uso


en diferentes disciplinas.

R y LaTex trabajan de manera integrada.

R es multiplataforma, es decir funciona en Mac, Windows o Linux)

1.3. Instalar R y RStudio


Para instalar R ir a la página web de R project: http://www.r-project.org.
Para descargar la aplicación hacer clic en CRAN y elegir el enlace más pró-
ximo a nuestra ubicación:
Ahora, según el sistema operativo, seleccionar la opción correspondiente.

4
1 Básicas Exactas - UniSinú

1.3.1. Instalar R en Windows


Al hacer clic sobre Download R for Windows iremos a la página siguiente.
Hacer clic sobre install R for the rst time.
En la siguiente ventana, hacer clic sobre Download R 3.3.3 for Windows y
guardar el archivo de instalación.
Ejecutar el archivo descargado para proceder a la instalación de R.

5
Básicas Exactas - UniSinú 1

1.3.2. Instalar RStudio para Windows


Descargamos la aplicación desde la página web de RStudio:

https://rstudio.com/products/rstudio/download/
Una vez guardado el archivo, ejecutarlo para instalar RStudio. Seguir las
indicaciones.

6
1 Básicas Exactas - UniSinú

1.3.3. Entorno RStudio


En general, es común trabajar con la interfaz de RStudio antes que con la
de R, porque la primera es más amigable para el usuario. Si abrimos RStudio
encontramos algo parecido a lo que se muestra en la siguiente imagen:
Una vez estamos en RStudio, podemos escribir y ejecutar las órdenes de
varias formas:

Directamente en la consola

A través de un script (.R)

Con cheros Rmarkdown (.Rmd)

Como podemos ver, RStudio está (normalmente) dividido en 4 paneles:

7
Básicas Exactas - UniSinú 1

1. Consola.

Por defecto, la consola se encuentra en el panel inferior-izquierdo. Apa-


rece el símbolo >, denominado Prompt. Aquí es donde R espera que le
demos instrucciones. Para ejecutarlas y obtener el resultado pulsamos
enter. Veamos un ejemplo:

>3 + 5
[1] 8
> 2∗14
[1] 28

2. Scripts.

Trabajar en la consola es muy limitado ya que las instrucciones se han

8
1 Básicas Exactas - UniSinú

de introducir una a una. Lo habitual es trabajar con scripts o cheros


de instrucciones. Estos cheros tienen extensión ∗ ∗ .R ∗ ∗.
Se puede crear una script con cualquier editor de texto, pero lo haremos
desde RStudio. Para ello, seleccionamos la siguiente ruta de menús:

File > New File > R script

El panel del script se sitúa en la parte superior-izquierda de RStudio.


Aquí se puede escribir las instrucciones línea por línea. Las instrucciones
se pueden ejecutar una a una o es posible seleccionarlas y ejecutarlas
en bloque. Para ejecutar las instrucciones se tienen varias alternativas:

Hacer clic en el botón Run. (botón situado en la parte derecha


de las opciones del panel de script).
Pulsar Ctrl+r.
Ejecutar el código desde las opciones del menú Code.
Como se muestra en la siguiente imagen, escribimos nuestro primer
script.
Para guardar el script:
File - Save as.. y seleccionar la ruta donde se quiere guardar el
archivo.
Hacer clic en el botón Guardar, que se encuentra en la parte
izquierda de la cinta de opciones del script.
3. Entorno.

El panel de entorno se tienen dos pestañas principales: Environment


y History.

9
Básicas Exactas - UniSinú 1

En el Environment se irán registrando los objetos que vayamos


creando en la sesión de trabajo. También tenemos la opción de
cargar y guardar una sesión de trabajo, importar datos y limpiar
los objetos de la sesión. Estas opciones están accesibles a través
de la cinta de opciones de la pestaña.
En la pestaña History se registran las instrucciones ejecutadas.
Como opciones, podemos cargar y guardar el historial de la sesión,
seleccionar una o más instrucciones y enviarlas bien a la consola
bien al script, y limpiar el historial.

4. Miscelánea: Archivos, Grácos, Paquetes, Ayuda, Visor.

10
1 Básicas Exactas - UniSinú

Con el nombre de Misceléna se conoce al panel que se encuentra en


la parte inferior-derecha del escritorio de RStudio. En este panel cabe
destacar las siguientes pestañas, cada una con diferentes opciones:

Files: es una especie de explorador de archivos usados reciente-


mente.
Plots: donde se visualizan los grácos creados. Entre las opciones
disponibles se encuentran:
ˆ Zoom: para agrandar el gráco y verlo en otra ventana.
ˆ Export: para exportar/guardar el gráco. Se puede guardar
el gráco como imagen, pdf o copiarlo al portapapeles.
Packages: proporciona un listado de los paquetes instalados en R
y los que han sido cargado en la sesión. A través de las opciones
de esta pestaña es posible instalar nuevos paquetes o actualizar
los existentes.
Help: Para obtener ayuda sobre una determinada función.

1.3.4. Conguración del directorio de trabajo.


Antes de comenzar a trabajar se debe jar el directorio donde se guardarán
los archivos. Existen dos alternativas.

Opción 1. Indicamos a R la ruta donde queremos trabajar y la jamos


con la función setwd().

setwd("C:/ruta del directorio de trabajo")

Para comprobar el directorio de trabajo utilizamos la función getwd():

getwd()

Para obtener un listado de los archivos que contiene la ruta establecida


se usa la función dir().

11
Básicas Exactas - UniSinú 1

dir()

Opción 2. Proyecto de R.

Al crear un proyecto todos los archivos quedan vinculados directamente


al proyecto. Para crear un proyecto seleccinar File - New project. . .
Se abrirá la siguiente ventana:

Para crear un proyecto en un nuevo directorio, hacer clic en el botón


New Directory. En seguida, seleccionar el tipo de proyecto, en este caso,
New Project y asignar un nombre al directorio (carpeta) que se va a
crear y que al mismo tiempo será el nombre del proyecto de R. Para
terminar, hacer clic en el botón Create Project. Al seguir este proceso
se habrá creado una carpeta en Documentos y un archivo nombrecar-
peta.Rproj.

Para crear un proyecto en una carpeta que ya existe, hacer clic en el


botón Existing Directory, y después seleccionar la carpeta con la ayuda
del Browse.. si es necesario. Una vez elegida la carpeta, clic en Create
Project.

Para abrir un proyecto hacer doble clic sobre el archivo con extensión
.Rproj o lo abrimos desde el menú de RStudio: File - Open Project. . .

12
1 Básicas Exactas - UniSinú

Una ventaja de usar proyectos, es que cualquier archivo creado (script


de R, documento de Rmarkdown, etc.) se guardará en la carpeta del
proyecto.

1.3.5. Instalar y cargar paquetes.


R está compuesto por un sistema de paquetes básico, pero generalmente ne-
cesitamos extender su funcionalidad, para esto es necesario instalar paquetes
adicionales. Podemos instalar paquetes de varias formas:

A través del menú: Tools - Install packages. . .


En el escritorio de RStudio: Packages/Install. Vemos los paquetes que
tenemos actualmente instalados y aquellos que se encuentran cargados.

Utilizando la función install.packages(). El nombre del paquete que


queremos instalar debe ir entre comillas.

install.packages("dplyr")() # dplyr es un paquete que se utiliza para


manipular/gestionar datos

Una vez instalado el paquete, hay que cargarlo para poderlo utilizar.
Esto se hace con la función library().

13
Básicas Exactas - UniSinú 1

library("dplyr")() # observe que el nombre del paquete no se pone


entre comillas para cargarlo

1.3.6. Ayuda en R.
En muchas ocasiones necesitamos ayuda sobre cómo funciona una determi-
nada función, cuáles son sus argumentos, etc. Hay varias formas de pedir la
ayuda de R. Por ejemplo, vamos a pedir la ayuda de la función mean().

healp(mean)
?mean
mean # y pulsar la tecla F1

Si ejecutamos directamente la función library() se abrirá una ventana lis-


tando los paquetes que tenemos instalados en R. En el escritorio de RStudio,
en la pestaña Packages, también se tiene un listado de paquetes instalados,
organizados en dos bloques: User Library y System Library.

library()

Para obtener ayuda sobre un determinado paquete . . .

library(help = foreign)

En ocasiones junto con los paquetes se facilita una documentación sobre su


uso, a esto se le llama vignettes.

vignette() # Para ver una lista de las vignettes a las que podemos acceder
por paquete

y a una vignette concreta de un paquete:

14
1 Básicas Exactas - UniSinú

vignette(Sweave-journals, package = AER) # Se abrirá un PDF con la do-


cumentación

Pero sin duda, una de las mejores fuentes de ayudas en R nos las proporcionan
las fuentes conables encontradas en internet.

1.4. La Calculadora de R
Cuando se trabaja en modo interactivo en la consola de R, se deben escribir
las instrucciones a la derecha del símbolo de inicio >. Para ejecutar una ins-
trucción al terminar de escribirla, se debe pulsar la tecla Enter (←-); así por
ejemplo, si junto al símbolo de inicio escribimos la operación 7+8 y pulsamos
enter, R escribirá en la línea siguiente el resultado 15, y a continuación apa-
recerá una nueva línea en blanco encabezada por el símbolo de inicio, donde
podremos seguir escribiendo y ejecutando nuevas instrucciones.

> 7+8 # pulsar enter


[1] 15
>

El símbolo # sirve para hacer comentarios en una línea de instrucciones, R


ignora todo lo que se escribe en la línea después del símbolo #.

Si la expresión que ingresamos no está completa , R no la evaluará y en la


siguiente línea esperará a que terminemos, esto lo hace colocando por defecto
un +. Además, si cometemos un error de sintaxis, R nos mostrará un mensaje
de error, como se muestra a continuación.

> 3*(4+5 # pulsar enter pero la instrucción está incompleta


+ ) # ahora sí está completa

Se puede agrupar más de una instrucción en una sola línea separándolas con
punto y coma. R ejecutará cada una de las instrucciones en el mismo orden
en el que las escribimos.

15
Básicas Exactas - UniSinú 1

> 4+8 ; 6*9

[1] 12

[1] 54

1.5. Números reales: Operaciones y funciones


básicas
Cuando trabajamos con números reales, la separación entre la parte entera
y la parte decimal, se hace con un punto.

> 3+6.5
[1] 9.5

> 3+6,5 # Se generará un error

Error: inesperado ',' in 3+6,

En R, los signos de las operaciones usuales se muestran a continuación.


Operación Signo
Suma +
Resta −
Multiplicación ∗
División /
Potencia 
Cociente Entero % /%
Residuo Div. entera %%

Tabla 1.1: Signos de operaciones básicas

A continuación se presentan algunos ejemplos de estas operaciones. Observar


los signos de agrupación para indicar la precedencia de las operaciones.

16
1 Básicas Exactas - UniSinú

> 4*3+7/2# Primero se ejecuta la multiplicación y luego la suma


[1] 15.5

> 4*(3+7/2)# Primero se ejecuta la suma y luego la multiplicación


[1] 26

> 5/3+6
[1] 7.666667

> 3/(5+6)# Primero se ejecuta la suma y luego la división


[1] 0.2727273

> 4 2*3# El exponente es 2


[1] 48

> 4 (2*3)# El exponente es 6


[1] 4096

> 4 (-3)
[1] 0.015625

> 124 % / % 12# Calcula el cociente entero


[1] 10

> 124 % % 12# Calcula el residuo de la división entera


[1] 4

El objeto pi representa el número real π.

> pi
[1] 3.141593

> 3*pi
[1] 9.424778

17
Básicas Exactas - UniSinú 1

Cuando un número es muy grande o muy pequeño, R usa notación cientíca


para expresar el número.

> 3 50
[1] 7.178998e+23

> 3 (-50)
[1] 1.392956e−24

En este ejemplo, el número 7.178998e+23 representa el número 7.178998·1023 ,


y el número 1.392956e−24, representa el número 1.392956·10−24 .

Otras funciones numéricas que dispone R, se muestran en la siguiente tabla.


La función n! es el factorial de n y se dene como

Función n

x ex ln x log10 x loga (x) n! k
Signo sqrt exp log log10 log(x,a) factorial choose
Función sin(x) cos(x) tan(x) arcsin(x) arc cos(x) arctan(x) |x|
Signo sin cos tan asin acos atan abs

Tabla 1.2: Signos de otras funciones numéricas

n! = 1 × 2 × 3 × 4 × . . . × n

La notación n
, corresponde a una combinación (se lee n combinado k ) y se

k
dene como
 
n n!
=
k k!(n − k)!
Las funciones de R se aplican a sus argumentos introduciéndolos entre pa-
réntesis. Veamos algunos ejemplos.

> sqrt(64)
[1] 8

18
1 Básicas Exactas - UniSinú

> log10(10000) # logaritmo en base 10


[1] 4

> log(64,8) # logaritmo en base 8 de 64


[1] 2

> exp(2) # esto es e2


[1] 7.389056

> factorial(6) # esto es 6!


[1] 720

> choose(6,2) # Esto es 6 combinado 2


[1] 15

> exp(sqrt(4)) # Esto es e 4

[1] 7.389056

R toma los argumentos de las funciones sen, cos y tan, en radianes. Si se


quiere aplicar una de estas funciones a un número determinado de grados, se
deben convertir los grados a radianes multiplicándolos por π/180. De igual
manera, los resultados de asin, acos y atan, también están en radianes y se
pueden convertir a grados multiplicándolos por 180/π .

> cos(45) # Coseno de 45 radianes


[1] 0.525322

> cos(45*π/180) # Coseno de 45 grados


[1] 0.7071068

> asin(0.5) # Arcseno de 0.5 radianes


[1] 0.5235988

> asin(0.5)*180/π # Arcseno de 0.5 en grados


[1] 30

19
Básicas Exactas - UniSinú 1

> asin(2)
[1] NaN

En el último ejemplo NaN es el acrónimo de Not a Number, signica que el


resultado no existe, de hecho arcsin(2) no existe como número real, ya que
el rango de la función seno es el intervalo [−1, 1].
Para culminar esta parte miremos el siguiente ejemplo.

> sqrt(2) 2 − 2

[1] 4.440892e-16


En teoría el resultado debería ser cero. Pero, R opera internamente 2 con
una precisión de aproximadamente 16 cifras decimales, por esta razón no se
obtiene el resultado exacto.

1.6. Cifras signicativas y redondeos


En cada cálculo, R determina cuántas cifras muestra de un número, según
el contexto. Si necesitamos conocer una cantidad especíca n de cifras sig-
nicativas de un número x, es posible utilizar la función print(x,n), por
ejemplo:

> sqrt(3)
[1] 1.732051

> print(sqrt(3),17)
[1] 1.7320508075688772

> print(sqrt(3),3)
[1] 1.73

20
1 Básicas Exactas - UniSinú

> 2 100
[1] 1.267651e+30

> print(2 100, 15)


[1] 1.26765060022823e+30

El número máximo de cifras que se puede pedir con print es 22, después de
esta cifra R generará un mensaje de error.

> print(sqrt(3),22)
[1] 1.7320508075688772

> print(sqrt(3),23)

Error in print.default(sqrt(3), 23) : argumento digits inválido

La función print permite indicar las cifras que queremos leer, pero no per-
mite especicar las cifras decimales con las que queremos trabajar. Para
redondear un numero x a una cantidad especíca de n cifras decimales y
trabajar únicamente con esas cifras, se debe usar la función round(x,n). La
√ print y round es la siguiente, print(sqrt(3),3) sigue sien-
diferencia entre
do igual a 3 y R muestra únicamente las tres primeras cifras, en cambio
round(sqrt(3),3) es igual a 1.732.

¾Qué pasa si no se indica el número de cifras en el argumento de round?

> round(sqrt(2))
[1] 1

> round(sqrt(2), 0)
[1] 1

21
Básicas Exactas - UniSinú 1

Al escribir round(sqrt(2)), R entiende que el número de cifras decimales al


que queríaamos redondear era 0. Esto signica que 0 es el valor por defecto
de este parametro. No es necesario especicar los valores por defecto de los
parametros de una funcion, y para saber cuales son, hay que consultar su
Ayuda. Así, por ejemplo, la ayuda de round indica que su sintaxis es:

round(x, digits = 0)

donde el valor de digits debe ser un número entero que indique el número de
cifras decimales. Esta sintaxis signica que el valor por defecto, del parametro
es digits 0. Escribir digits = en el argumento para especicar el número de
cifras decimales es optativo, pero se debe mantener el orden de los argumentos
indicado en la ayuda, en este caso, primero el número y luego las cifras. Este
es el motivo por el que podemos escribir round(sqrt(2), 1), en lugar de
round(sqrt(2), digits = 1) . Si cambiamos el orden de los argumentos,
entonces sí hay que especicar el nombre del parametro, como muestra el
siguiente ejemplo:

> round(digits = 3, sqrt(2))


[1] 1.414

> round(3, sqrt(2))


[1] 3

También puede suceder que una función de dos argumentos tome sólo uno
por defecto, por ejemplo la función log. Su sintaxis completa es log(x,
base = . . .), y si no espccicamos la base, toma su valor por defecto e, y
calcula el logaritmo natural. La funcion round(x) redondea x al valor entero
más cercano (y en caso de empate, al que termina en cifra par). R tambien
dispone de otras funciones que permiten redondear a números enteros en
sentidos especícos:

floor(x) redondea x a un número entero por defecto, dando el mayor


número entero menor o igual que x, que se denota por bxc.

ceiling(x) redondea a un número entero por exceso, dando el menor


número entero mayor o igual que x, que se denota por dxe.

22
1 Básicas Exactas - UniSinú

trunc(x) da la parte entera de x, eliminando la parte decimal.

> floor(8.3) # E1 mayor entero menor o igual que 8.3


[1] 8

> ceiling(8.3) # E1 menor entero mayor o igual que 8.3


[1] 9

> trunc(8.3) # La parte entera de 8.3


[1] 8

> round(8.3) # E1 entero más cercano a 8.3


[1] 8

> floor(-3.7) # E1 mayor entero menor o igual que -3.7


[1] -4

> ceiling(-3.7) # E1 menor entero mayor o igual que -3.7


[1] -3
> trunc(-3.7) # La parte entera de -3.7
[1] -3

> round(-3.7) # E1 entero más cercano a -3.7


[1] -4

1.7. Denición de variables.


R funciona mediante objetos, los cuales son estructuras de diferentes tipos
que sirven pare realizar diferentes tareas. Una variable es un tipo de objeto
que sirve pare guardar datos. Por ejemplo, si queremos crear una variable x
que contenga el valor 72 podemos escribir:

> x = 72
[1] 1.414

23
Básicas Exactas - UniSinú 1

Al ingresar esta instrucción, R crea el objeto x y le asignará el valor especi-


cado. En general, se puede crear una variable y asignarle un valor, o asignar
un nuevo valor a una variable denida anteriormente, mediante la sintaxis

nombre de la variable = valor

Tarnbien se puede asignar un valor a una variable por medio de una echa
− > o < −, compuesta de un guión y un signo de desigualdad, de manera
que el sentido de la echa vaya desde el valor hacia la variable; por ejemplo,
las tres primeras instrucciones siguientes son equivalentes, y asignan el valor
10 a la variable x, mientras que las dos últimas son incorrectas:

> x = 10

> x < − 10

> 10 − > x

> 10 = x
Error in 10 = x : lado izquierdo de la asignación inválida (do
set)

> 10 < − x
Error in 10 = x : lado izquierdo de la asignación inválida (do
set)

Es posible asignar varios valores a una misma variable en una misma sesion,
pero en cada momento, R usará el último valor asignado. Además, es posible
redenir el valor de una variable usando en la nueva denición su valor actual.
Por ejemplo:

>x = 7

> x 2

[1] 49

24
1 Básicas Exactas - UniSinú

> x = x - 5 # Se redene x como el valor actual de x menos 9

>x
[1] 2

1.8. Denición de funciones.


A menudo es necesario denir alguna funcion. Para ello debemos usar una
sintaxis especial:

nombre de la función = function(variables)denición

Una vez denida una función, la podemos evaluar en√valores de la variable.


Por ejemplo, vamos a denir la función f (x) = x2 + x:

> f = function(x) x 2 + sqrt(x)

> f(9) #la función f evaluada en 9

[1] 84

El nombre de la variable se indica dentro de los paréntesis que siguen a la


palabra function. En el ejemplo anterior, la variable independiente es x y
por esta razón se ha escrito = function(x). Es posible denir funciones con
otras variables, por ejemplo con la variable t, en este caso se habría escrito
= function(t).

Se pueden denir funciones de dos o más variables con function. Por ejem-
plo, para denir la funcion f (x, y) = e2x+y , debemos seguir la siguiente sin-
taxis:

> f = function(x, y) exp(2x + y)

25
Básicas Exactas - UniSinú 1

y ahora podemos evaluar la función en los valores (2,1):

> f(2,1)

[1] 148.4132

Las funciones no sólo pueden tener como argumentos o resultados solo rul-
meros reales, éstos pueden ser vectores, matrices, tablas de datos, etc. y se
pueden denir por medio de secuencias de instrucciones, en este caso hay
que separar las diferentes instrucciones con signos de punto y coma o escribir
cada instrucción en una nueva línea.

En cada momento se puede listar los objetos (variables y funciones) que se


han denido en la sesion hasta ese momento, por medio de la instrucción ls
() o consultando la pestaña Environment. Para eliminar un objeto, hay
que aplicarle la funcin rm. Si se quiere borrar todos los objetos que se han
denido, se puede emplear la instructionrm(list = ls()) o usar el botón
clear de la barra superior de la pestaña Environment.

> rm(list = ls()) #Borramos todos los objetos

> f = function(x){3x - 1}

>a = 3

>a
[1] 3

> ls()
[1] " a" "f"

> rm(a)

> ls()

26
1 Básicas Exactas - UniSinú

[1] "f"

>a

Error: object a not found

1.8.1. Algunas clases de funciones.


Funciones de variable entera
R trabaja con funciones de variable entera de forma excata, sin aproxima-
ciones. Entre las funciones de variable entera, las más importantes que con-
templa R son las siguientes:

Función Resultado
sign(n) Signo de n (1 si n > 0, -1 sin n < 0, n ∈ R
> sign (-5)
[1] -1
max(n1, n2) Máximo de los números n1 y n2
> max (5,3)
[1] 5
min(n1, n2) Mínimo de los números n1 y n2
> min (11,7)
[1] 7
factorial(n) Factorial de n(n − 1)(n − 2) . . . 1
> factorial (5)
[1] 120
choose(n,k) Combinación de n con k
> choose (5,2)
[1] 10

Tabla 1.3: Funciones de valores enteros

Funciones de variable real


La forma en que R trata los números racionales es distinta a la de la ma-
yoría de claculadoras. Los números racionales son cocientes de enteros y R

27
Básicas Exactas - UniSinú 1

también puede trabajar con ellos de forma excata, de manera que el resul-
tado de expresiones en las que intervienen números racionales es siempre
otro número racional o entero. Como vimos en temas anteriores, R devuelve
aproximaciones decimales de los resultados.

Algunas constantes reales muy típicas en R son las siguientes:

Constante Valor
pi Número π = 3.1415926
> pi
[1] 3.141593
exp(1) Número e = 2.7182818
> exp (1)
[1] 2.718282
inf Innito (por ejemplo 1/0)
> 1/0
[1] Inf
factorial(n) Factorial de n(n − 1)(n − 2) . . . 1
> factorial (5)
[1] 120
NaN Indeterminación (por ejemplo 0/0)
> 0/0
[1] NaN
NA Valor desaparecido
NULL Objeto nulo

Tabla 1.4: Constantes comunes

A continuación se muestra una tabla con las funciones trigonométricas bási-


cas:

28
1 Básicas Exactas - UniSinú

Función Signicado
sin(x) Función Seno
> sin (pi/2)
[1] 1
cos (x) Función Coseno
> cos (pi)
[1] -1
tan (x) Función Tangente
> tan (pi/4)
[1] 1

Tabla 1.5: Funciones Trigonométricas

A continuación se muestra una tabla con las funciones exponenciales y loga-


rítmicas:

Función Signicado
exp(x) Función exponencial en base e
> exp (log(5))
[1] 5
log(x) Función logaritmo en base e de x
> log (exp(5))
[1] 5
log10(x) Función logaritmo en base 10 de x
> log10(1000)
[1] 3
log2(x) Función logaritmo en base 2 de x
> log2(16)
[1] 4
exp(x) Función raíz cuadrada de x
> sqrt (64)
[1] 8

Tabla 1.6: Funciones Trigonométricas

29
Básicas Exactas - UniSinú 1

30
Capítulo 2
Vectores y Matrices

2.1. Vectores
Un vector es una serie ordenada de datos. R maneja varios tipos de datos,
entre los cuales se encuentran los siguientes:

logical (lógicos: TRUE, verdadero, o FALSE, falso)


integer (números enteros)
numeric (números reales)
complex (números complejos)
character (texto)
Una restricción fundamental para los vectores que maneja R, es que todos
sus elementos deben ser del mismo tipo, es decir todos números, todos tipo
caracter, etc. Cuando es necesario usar vectores formados por objetos de
diferentes tipos, se debe usar listas heterogéneas, esto es objetos tipo lists.

2.1.1. Construcción de vectores


Para denir un vector R dispone de varias funciones:

c: Sirve para concatenar datos.


scan: Permite leer o importar datos.

31
Básicas Exactas - UniSinú 2

rep, seq: Para crear vectores especícos.


Función c
Para denir un vector con unos elementos dados, por ejemplo

10, 5, 13, 7, 14

podemos aplicar la funcion c a estos elementos separados por comas, así:

Ejemplo 2.1 > x = c(10,5,13,7,14)


>x

[1] 10 5 13 7 14

También es posible crear un vector de palabras con la instrucción c, pero


debemos escribirlas entre comillas. R también las mostrará entre comillas.

> nombres = c("Andres", "Sofia", "Laura")

> nombres

[1] "Andres" "Sofia" "Laura"

Mencionamos anteriormente que todos los elementos de un vector deben ser


del mismo tipo. Por esta razón, si concatenamos datos de diferentes tipos en
un vector, R automáticamente los convertirá en un tipo que pueda ser común
a todos ellos. El orden de conversión entre los tipos de datos es: character,
complex, numeric, integer, logical. Es decir que el de mayor importanci es el
tipo character, así cuando alguna entrada de un vector es de tipo texto, R
considera el resto de sus entradas como texto (y las muestra entre comillas),
como se puede ver en el siguiente ejemplo:

32
2 Básicas Exactas - UniSinú

Ejemplo 2.2 > c(3, 4.3, FALSE, "Hola")


[1] "3" "4.3" "FALSE" "Hola"

Función rep

Esta función se utiliza para construir vectores repitiendo datos o vectores.


Para denir un vector constante basta con utilizar la función rep(x,n),
donde n es la cantidad de veces que queremos repetir el valor x. Pero si
queremos aplicarla a vectores:

rep(vector, times=n): Repite n veces el vector en bloque.

rep(vector, each=n): Repite n veces cada entrada del vector.

A continuación veamos ejemplos con esta función:

Ejemplo 2.3 > rep("H",50)


[1]"H""H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H"
"H" "H" "H" "H"
[20]"H""H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H"
"H" "H" "H" "H"
[39]"H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H" "H"

> x = c(1,2,3,4)

> rep (x , times = 5)

[1] 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4

33
Básicas Exactas - UniSinú 2

Función seq
Permite construir progresiones aritméticas. Sus usos básicos son los siguien-
tes:

seq(a,b, by = r): dene la progresión aritmética desde a hasta b con


paso r.

seq(a, by=r, length.out = n): dene la progresión aritmética q partir


de a, de longitud n con paso r.

seq(a,b, length.out = n): dene la progresión aritmética de longitud n


que va de a a b y su paso es p = (b − a)/(n − 1) si n > 1.

Se pueden encontrar otros usos en la ayuda de la función. Veamos un ejemplo


de cada uno de los usos:

Ejemplo 2.4 > seq(0,20, by = 3)


[1] 0 3 6 9 12 15 18

> seq (0,by=5,length.out = 10)

[1] 0 5 10 15 20 25 30 35 40 45

34
2 Básicas Exactas - UniSinú

> seq (2,12,length.out = 10)


[1] 2.000000 3.111111 4.222222 5.333333 6.444444 7.555556
8.666667
[8] 9.777778 10.888889 12.000000

Observe que cuando el resultado de una instruccion es un vector, R comienza


cada línea del resultado con un numero entre corchetes []. Este número indica
la posicion dentro del vector de la primera entrada de la linea correspondien-
te. De esta manera, en el resultado de seq (2,12,length.out = 10), R nos
indica que 2.000000 es el primer elemento de este vector y 9.777778 su octavo
elemento.

Función scan
Si ejecutamos la instruccion scan() (con el argumento vacío), R abre en la
consola un entorno de diálogo donde podemos ingresar los datos separados
por espacios en blanco; cada vez que pulsemos la tecla Enter, R importará los
datos que hayamos escrito desde la vez anterior en que la pulsemos y abrirá
una nueva línea donde espera más datos. Cuando terminemos, dejamos la
última línea en blanco (pulsando por última vez la tecla Enter) y R cierra el
vector.
Por ejemplo, para crear un vector que contenga los datos:

13579246

hacemos lo siguiente:

> x = scan() #pulsamos enter


1: 1 3 5 7 9 2 4 6
9:
Read 8 items

>x
[1] 1 3 5 7 9 2 4 6

35
Básicas Exactas - UniSinú 2

La funcion scan también se puede usar para copiar en un vector el contenido


de un archivo de texto situado en el directorio de trabajo, o del que conoz-
camos su dirección en la web. La manera de hacerlo es aplicando scan al
nombre del archivo o a su url, utilizando en ambos casos comillas dobles. Por
ejemplo, para denir un vector llamado notas con las notas de un examen
que se tienen guardadas en el archivo C://documents/notas.txt, se escribe
la siguiente instrucción:

> notas = scan(C://documents/notas.txt) #pulsamos enter

La funcion c que hemos usado para crear vectores en realidad concatena sus
argumentos en un vector (de ahi viene la letra c). Si la aplicamos a vectores,
crea un nuevo vector concatenando sus elementos. Podemos mezclar vectores
y datos en sus argumentos.

> x = c(rep(1,10), 11:20)


>x
[1] 1 1 1 1 1 1 1 1 1 1 11 12 13 14 15 16 17 18 19 20

> x = c(0,x,20,25)
[1] 0 1 1 1 1 1 1 1 1 1 1 11 12 13 14 15 16 17 18 19 20 20 25

La instrucción x = c(0,x,20,25), indica que la función c se puede usar para


añadir valores al principio o al nal de un vector sin cambiarle el nombre,
en este caso, hemos redenido x añadiéndole un 0 al principio y 20, 25 al nal.

Un vector se puede modicar facilmente usando el editor de datos que incor-


pora RStudio. Para hacerlo, se aplica la funcion fix al vector que se requiere
editar. R abre el vector en una nueva ventana de edición. Mientras esta ven-
tana este abierta, sera la ventana activa de R y no se podrá volver a la sesión
de R original, hast que cerremos esta ventana. Los cambios que se realicen en
el vector con el editor de datos se guardarán cuando se cierre esta ventana,
por ejemplo:

36
2 Básicas Exactas - UniSinú

> x = c(rep(3,10), 20:30)


>x
[1] 3 3 3 3 3 3 3 3 3 3 20 21 22 23 24 25 26 27 28 29 30

> fix(x)

Se abrirá entonces una ventana como la que se muestra en la siguiente gura.


En esta ventana, es posible, añadir, borrar y cambiar y cambiar los datos que
se requieran. Por ejemplo, añadir un 1 al principio y 50 al nal y guardar el
resultado pulsando Save en la ventana del editor. El valor del vector x se
modicará, comprobar esta acción ingresando x en la consola.

2.2. Operaciones con vectores.


Una propiedad que tiene R con el manejo de vectores, es que permite ejecu-
tar una operación matemática a todos los elementos del vector en un paso,
veamos algunos ejemplos de operaciones básicas.

> x = seq(2,40, by = 4)
>x
[1] 2 6 10 14 18 22 26 30 34 38

>x + 3
[1] 5 9 13 17 21 25 29 33 37 41

37
Básicas Exactas - UniSinú 2

> 3*x
[1] 6 18 30 42 54 66 78 90 102 114

> sqrt(x)
[1]1.414214 2.449490 3.162278 3.741657 4.242641 4.690416
5.099020 5.477226
[9]5.830952 6.164414

> 2∧x
[1] 4 64 1024 16384 262144 4194304
[7] 67108864 1073741824 17179869184 274877906944

> x∧2
[1] 4 36 100 196 324 484 676 900 1156 1444

A veces no es posible aplicar una función concreta a todo un vector, dentro


del argumento de la funcion, como se ha hecho en los ejemplos anteriores. En
estos casos podemos usar la siguiente instrucción:

sapply (vector, FUN = función)

Por ejemplo, la función mean, calcula la media aritmética de un vector.


Supongamos que denimos una función f, que aplicada a un número natural
x, calcula la media de los números

1, 2, 3, . . . , x

> f = function(x){mean(1:x)}

> f(20)
[1] 10.5

> f(30)
[1] 15.5

38
2 Básicas Exactas - UniSinú

Resulta que no podemos aplicar esta función a todas las entradas de un vector
x escribiendo simplemente f(x), como veremos en el siguiente ejemplo:

> f(20:30)
[1] 10.5
Warning message:
In 1:x : numerical expression has 11 elements: only the rst used

En estos casos debemos usar la función sapply, de la siguiente forma:

> sapply(20:30, FUN = f)


[1] 10.5 11.0 11.5 12.0 12.5 13.0 13.5 14.0 14.5 15.0 15.5

Otras formas de operar


Es posible operar término a término las entradas de dos vectores de la misma
longitud.

> 5:10 + 15:20 #Suma los vectores término a término


[1] 20 22 24 26 28 30

> 5:10 ∗ 15:20 #Producto término a término


[1] 75 96 119 144 171 200

> (2:4)  (1:3) #Potencia término a término


[1] 2 9 64

Lo anterior nos permite crear vectores de la forma (xn )n=a,··· ,b , cuyos términos
serían xa , xa+1 , xa+2 , · · · , xb . Por ejemplo para denir el vector

x = (2 · 3n − 1)n=1,··· ,10

escribimos las siguientes instrucciones:

39
Básicas Exactas - UniSinú 2

> n = 1:10 #Secuencia desde a hasta 10

> 2 * 3 n - 1
[1] 5 17 53 161 485 1457 4373 13121 39365 118097

Dc manera similar, para crear el vector:


 
n
y=
n2 + 1 n=0,··· ,20

usamos las siguientes instrucciones:

> n = 0:20
> y = n/(n 2 + 1)
>y
[1]0.00000000 0.50000000 0.40000000 0.30000000 0.23529412
0.19230769 0.16216216
[8]0.14000000 0.12307692 0.10975610 0.09900990 0.09016393
0.08275862 0.07647059
[15]0.07106599 0.06637168 0.06225681 0.05862069 0.05538462
0.05248619 0.04987531

R dispone de muchas funciones que se pueden aplicar a vectores, relacionadas


principalmente con la Estadística. A continuación se muestran algunas de
ellas.

length: calcula la longitud de un vector.

max y min: calculan los valores máximo y mínimo, respectivamente.

sum: calcula la suma de las entradas del vector.

prod: calcula el producto de las entradas.

mean: calcula la media aritmética de los elementos del vector.

40
2 Básicas Exactas - UniSinú

diff: calcula el vector formado por las diferencias sucesivas entre en-
tradas del vector original.

curasum: calcula el vector formado por las sumas acumuladas de las


entradas del vector original. Cada elemento de cumsum(x) es la suma
de las entradas de x hasta su posición.

sort: ordena los elementos del vector en el orden natural creciente


del tipo de datos que lo forman, es decir, el orden numérico, el orden
alfabético, etc. Si queremos ordenar un vector en orden decreciente, es
necesario incluir en su argumento el parámetro dec = TRUE.

rev: invierte el orden de los elementos del vector, por tanto, rev(sort())
es otra opción para ordenar de forma decreciente.

> x = c(9,4,5,3,8,10,7,5,4,2,11,6)
> length(x)
[1] 12

> max(x)
[1] 11

> min(x)
[1] 2

> sum(x)
[1] 74

> prod(x)
[1] 798336000

> mean(x)
[1] 6.166667

> cumsum(x)
[1] 9 13 18 21 29 39 46 51 55 57 68 74

41
Básicas Exactas - UniSinú 2

> diff(x)
[1] -5 1 -2 5 2 -3 -2 -1 -2 9 -5

> sort(x)
[1] 2 3 4 4 5 5 6 7 8 9 10 11

> sort(x, dec = TRUE)


[1] 11 10 9 8 7 6 5 5 4 4 3 2

> rev(x)
[1] 6 11 2 4 5 7 10 8 3 5 4 9

La función sum() es muy útil cuando necesitamos sumar grandes cantidades


de datos, o para evaluar sumatorias, por ejemplo, se requiere calcular el valor
total de la siguiente suma:
500
X 1
n=0
n2 +1

> n = 0:500
> sum(1/(n 2 + 1))
[1] 2.074676

La función cumsum() permite calcular las frecuencias acumuladas de una


variable. Además, es útil cuando se quiere evaluar la tendencia de una su-
ma innita. Por ejemplo, supongamos que queremos determinar a qué valor
tiende la siguiente suma:

!
X
S= 2−n
n=0

Aplicamos cumsum() al vector x = (2−n ), para valores de n.

42
2 Básicas Exactas - UniSinú

> n = 0:50

> x = 2 (-n)

> S = cumsum(x)

>S

[1] 1.000000 1.500000 1.750000 1.875000 1.937500 1.968750


1.984375 1.992188
[9] 1.996094 1.998047 1.999023 1.999512 1.999756 1.999878
1.999939 1.999969
[17] 1.999985 1.999992 1.999996 1.999998 1.999999 2.000000
2.000000 2.000000
[25] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000
2.000000 2.000000
[33] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000
2.000000 2.000000
[41] 2.000000 2.000000 2.000000 2.000000 2.000000 2.000000
2.000000 2.000000
[49] 2.000000 2.000000 2.000000

Observamos que esta sumatoria tiende a 2, es decir que:



X 1 1
= =2
2n 1
n=0 1−
2

43

También podría gustarte