0% encontró este documento útil (0 votos)
183 vistas219 páginas

Apuntes de Programacion en R

Este documento trata sobre la instalación de R en diferentes sistemas operativos como Windows, MacOS y Linux. Explica cómo descargar e instalar R en cada sistema operativo mencionando las distribuciones más populares de Linux como Debian, RedHat, OpenSUSE y Ubuntu. También menciona algunos IDEs y softwares externos populares para programar en R.

Cargado por

jorge1monterrey
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
183 vistas219 páginas

Apuntes de Programacion en R

Este documento trata sobre la instalación de R en diferentes sistemas operativos como Windows, MacOS y Linux. Explica cómo descargar e instalar R en cada sistema operativo mencionando las distribuciones más populares de Linux como Debian, RedHat, OpenSUSE y Ubuntu. También menciona algunos IDEs y softwares externos populares para programar en R.

Cargado por

jorge1monterrey
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

APUNTES

DE
PROGRAMACIÓN

práctica
para entender
.as bondades del R
APUNTES DE PROGRAMACIÓN EN R

F.M.N

20 de Marzo del 2020


Indice general

Capítulo 1

Instalación
1 Descargar R 7
1.1 Windows 2
1.2 Mac 4
1.3 Distribuciones Linux 4
Debían 4
RedHat 5
Opensuse 5
Ubuntu 5
2 Descargar IDE ó
3 Softwares Externos 6

Capítulo 2

Objetos en R
1 Creando y asignando valores 9
1.1 Tipos de datos 10
1.2 Clases de objeto 12
1.3 Ordenar datos 23
1.4 Valores aleatorios 23
2 Modificar 25
2.1 índice para objetos de una dimensión 25
2.2 índice para objetos de dos dimensiones 27
2.3 Modificar un [Link] y vectores 28

iii
IV
ÍNDICE GENERAL

3 Eliminar 32
3.1 Objeto 32
3.2 Un elemento o columna 32
[Link] 33

Capítulo 3

Repetidores y Condicionales
1 Repetidor 35
1.1 For 35
1.2 While 38
1.3 Repeat 39
2 Condicional 40
2.1 If 47
Modo Reducido 41
Modo Completo 42
2.2 Switch 44
2.3 Which 46

Capítulo 4

Atrapando Errores
1 try 49
2 tryCatch 50

Capítulo 5

Funciones en R
1 Funciones sin argumentos 53
2 Funciones con argumentos 56

Capítulo 6

Otras Operaciones
1 Operador Pipe 61
2 Caracteres 64

IV
INDICE GENERAL

3 Gráficos 72
3.1 Wordcloud 72
3.2 Plotly 74
3.3 GGplot 81
Annotate 89
gráfico torta 91
gráfico de barras para escala likert 93
temas 97

101
Importando y Exportando ficheros
1 CSV 103
1.1 Importar 104
interna 104
readr 107
csvread 109
1.2 Exportar 712
interna 7 72
readr 113
[Link] 115
2 SPSS 716
2.1 Importar 116
foreign 716
haven 718
2.2 Exportar 120
foreign 120
haven 722
3 Excel 724
3.1 Importar 724
readxl 724
3.2 Exportar 126
writexl 126

129
Base de Datos
1 MYSQL 729
1.1 Conectar 132

v
VI
ÍNDICE GENERAL

1.2 Insertar 134


1.3 Editar 137
1.4 Eliminar 139

Capítulo 9

Creando Reportes
1 MS Word 747
2 Markdown 747
2.1 Texto Normal 150
secciones o encabezados 150
estilos en caracteres 151
listas 152
notas al pie de página 153
2.2 texto matemático 754
2.3 código 754
2.4 figuras 156
locales 156
creadas 757
2.5 tablas 158
crear 158
librería 759
2.6 bibliografía 160
3 Látex 163
3.1 Textos 166
Párrafos 167
Alinear texto 168
Espacios 168
Listas 169
3.2 Ecuaciones 772
3.3 Tablas 178
Mediante librerías 178
Manualmente 183
3.4 Figuras 192
3.5 Bibliografías 199

Capítulo 10
207 Referencias
1 Bibliografía 207

vi
o
h-5

£
H
'M

Oh

<
O

Instalación

1.1 Descargar R
R es un lenguaje de programación dedicado al análisis estadístico y que esta
disponible en múltiples sistemas operativos como son Windows, macOS, Linux y
hay un desarrollo para android pero que a la actualidad aún no es oficial. Dado el
caso de ser un lenguaje de programación, la comunidad ha decidido incluir en su
instalador una interfaz llamada “R Commander” que es el estándar pero que a
su vez esta pensado ejecutarse en todo tipos de computadoras sin restricción de
requisitos! procesador, memoria ram y otros). Debido a su gran fama grupos de
desarrolladores han creado IDE’S (entorno de desarrollo integrado) con el fin de
que programar en R sea más sencillo y claro que hay otros que se han enfocado en
GUI (interfaz gráfica de usuario) centrándose en la creación de menús interactivos
similares a IBM SPSS. Dentro de los mas conocidos nos encontramos con:

Rstudio IDE muy recomendado por la comunidad de R pero que para su funcio¬
namiento requiere un procesador dual core como mínimo.

R AnalyticFlow Con un tanto de GUI, como requisito principal es tener instalado


Java JDK. Usa diagrama de flujos o nodos, lo que le hace muy conveniente
cuando se trata de pronósticos y predicciones donde se necesita repetir el
mismo proceso varias veces.

RKWard También con un tanto de GUI y es otra alternativa a Rstudio.

Jamovi, BlueSky Statistics,JASP, GUI muy interactivo para aquellos quienes


solo buscan resultados en pocos pasos.

1
2
CAPITULO 1. INSTALACION

<111 Windows

La descarga de R se encuentra en varios Países me¬


diante la red de servidores eran, comúnmente llamado
espejos eran donde almacenan las versiones y docu¬
mentaciones del software, recuerde que cada servidor
o espejo eran es distinto en cuanto a velocidad de des¬
carga.

Para descargar el programa R ingrese a su pagina


oficial
[Link] y ha
ga clic en la versión recomendada.

R-4.0.0 for Windows (32/64 bit)

Versión Recomendada
Download R 4.0.0 for Windows1»84 meeabvtes. 32/64 bit)
Installation and other instructions
New features in thís versión
Versión Actual Parcheada
If you want to double-check that the package you have downloaded matches the package distributed by/CRAN, you can compare the md5sum of the .exe to the
fingerprint on the master server. You will need a versión of md5sum for Windows: both graphical anefcommand fine versions are available.

Frequently asked quesfcíons

Does R run under mv versión of Windows?


How do I update packages in mv previous versión of R?
Should I run 32-bit or 64-bit R? Versión en Desarrollo
Please see the R FAQ for general information about R and the R Window^-fAQ for Windows-specific information.

Other builds

Patches to this release are incorporated in the r-patched snapshot build.


A build of the development versión (which will eventually become the next major release of R) is available in the r-devel snapshot build.
Previous releases

Note to webmasters: A stable link which will redirect to the current Windows binary release is
<CRAN MIRROR>/bin/windows/base/[Link].

Las otras dos opciones solo son únicamente para probar como va el desarrollo
de R, si usted esta en proyectos grandes y no quiere tener errores de software
entonces solo use la versión recomendada por la comunidad. Una vez descargado
ejecute y haga lo siguiente: “elija las opciones y de en el botón siguiente”

2
3
1. DESCARGAR R

Definir Lenguaje Aceptar licencia



0 Instalar - R for Windows 4.0.0 |

X Información
Es importante que lea la siguiente informadón antes de continuar.

Select the language to use durlng the


installation. Cuando esté listo para continuar con la instalación, haga dic en Siguiente.

GNU GENERAL PUBLIC LICENSE


Versión 2, June 1991
Español V
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
fe A 51 Franldin St, Rfth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
Frangais of this license document, but changing it is not allowed.
Italiano
Nederlands Preamble

Norsk The licenses for most software are designed to take away your
ffeedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your ffeedom to share and change ffee
software-to make sure the software is ffee for all its users. This
General Public License applies to most of the Free Software

Siguiente > Cancelar

Crear Carpeta en el Menú de Inicio Seleccionar Arquitectura


0 Instalar - R for Windows 4.0.0

Seleccione la Carpeta del Menú Inicio


¿Dónde deben colocarse los accesos directos del programa?

El programa de instalación creará los accesos directos del programa en la


siguiente carpeta del Menú Inicio.

Para continuar, haga dic en Siguiente. Si desea selecbonar una carpeta distinta, haga
dic en Examinar.

R Examinar...

I I No crear una carpeta en el Menú Inido

< Atrás Siguiente > Cancelar

Usar configuración estándar Crear acceso directo en escritorio


0 Instalar - R for Windows 4.0.0 0 Instalar - R for Windows 4.0.0 - n ■

Opciones de configuración Seleccione las Tareas Adicionales


Desea utilizar las opdones de configuraaón ? ¿Qué tareas adiaonales deben realizarse?

Por favor, espeafique si o no y luego haga dic en Siguiente. Selecaone las tareas adiaonales que desea que se realicen durante la instalaaón de R
for Windows 4.0.0 y haga dic en Siguiente.
Os
Accesos directos adiaonales:
® No
0 Crear un acceso directo en el escritorio

O Crear un acceso directo en Inido Rápido

Registro de entradas:

0 Guarde el número de versión en el registro

0 Asobar archivos .RData con R

< Atrás Siguiente > Cancelar < Atrás Siguiei Cancelar

3
CAPITULO 1. INSTALACION

2.1.2 Mac
La última versión de R únicamente se pueden instalar si cuentas con macOS
10.13(Sierra) y versión superior, Si dispones de versiones de macOS inferiores
instala las versiones inferiores de R.
Si posees macOS 10.13, ingrese en esta url directamente a la descarga:
[Link]
O si tienes una versión de macOS inferior ingrese a:
[Link]
y elija la versión que más se adapta a la versión de su macOS.

3.1.3 Distribuciones Linux


Las distribuciones en linux que aceptan la instalación de R-Project son de¬
bían, r edhat, suse, ubuntu
[Link]

Debían

Si es la primera vez que instala un software en debian y no


posee una clave local “NO_PUBKEY”, procure hacer los siguientes
pasos.
Paso 1: Abra consola o terminal y escribe

sudo nano /etc/apt/[Link]

Eso permitirá abrir el fichero y agregamos lo siguiente

deb [Link] stretch main contrib


deb-src [Link] stretch main contrib
deb [Link] buster-cran40/

Estos enlaces servirán para actualizar los componentes base de debian y la


última es escencial para R. Una vez terminado presione [ctrl|+[ O ] y [<-3| para guardar
los cambios. Actualizamos los repositorios

sudo apt-get update


-

Paso 2: Crear clave publica si es que aún no la tienes, en el segundo


comando requiere de sus datos, al terminarfia última pregunta), usa f V para
finalizar y escribe una contraseña para terminar de crear la key.

4
1. DESCARGAR R
5

sudo apt-get install gnupg


gpg --full-generate-key

Paso 3 Final: escribe este comando en consola y espera a que termine


la instalación

sudo apt-get install r-base

RedHat
La instalación en Redhat solo requiere de pocos comandos
como

yum update
yum install epel-release
yum install R

El primer comando sirve para actualizar los paquetes, el se¬


gundo es un complemento importante para el tercer comando
que es el paquete R.

Opensuse
La instalación de R se hace a través de su YaST2 ingresando
en
Main menú -> System -> YaST -> Software ->

Software Management

ejecutas y escribes R-base en su buscador y seleccionas el


resultado “R-base” o “R-base-devel”. Finalmente le das clic en el
botón Accept y esperas a que empiece la descarga y la instalación.

Ubuntu
Hay dos formas de instalar en ubuntu el software R, una
de ellas es mediante Ubuntu Software y la otra depende de la
consola.

sudo apt-get update


sudo apt-get install r-base

Si te genera algún error al instalar, es posible que se deba


a dependencias del software o a la versión misma del software

5
CAPÍTULO 1. INSTALACIÓN

“bionic,xenial y focal”, puede que este comando solucione tu problema.

sudo apt-get install aptitude


sudo aptitude install r-base

2.2 Descargar IDE

Importante

! Primero debes descargar el software R que incluye el compi-


• lador del lenguaje. Después instala el IDE que mejor sea de tu
agrado

Como lo mencione al inicio, los IDE’S recomendados por la comunidad son


“Rstudio, R AnalyticFlow y RKWard”. Cada uno de ellos en sitio web ofrecen la
descarga para distintas plataformas.
También hay complementos para editores de código como:

Visual Studio Code R Tools

Atom Rbox

Achitect

Jupyter

Vim Nvim-R

3.3 Softwares Externos


Los reportes Markdown a PDF o LTpXen Sweave requieren de su propio compi¬
lador y es de vital importancia instalar para después no tener errores al compilar
un reporte.
El que recomiendo instalar es MiKTeX porque su instalación es limpia sin
paquetes a diferencia de Tex Live. Ingrese a esta url para descargar la versión re¬
ciente “[Link] una vez descargado(aprox 235mb) inice
la instalación ejecutando este archivo.
Manual Instalación [Link]

6
3. SOFTWARES EXTERNOS

Nos toca agregar la carpeta a la variable de entorno, esto es muy importante.


Trate de ubicar el directorio donde se ha instalado MiKTeX, por ejemplo:

C:\Program Files\MiKTeX 2.9\miktex\bin\x64

Presione desde Windows las teclas ■■]+[ R " y escriba

%windir%\System32\rundí[Link] [Link],EditEnvironmentVariables

Esto abrirá una pequeña ventana , enfoquese en Path y haga clic en el botón
Editar. Al final de ese textbox agrega el directorio

;C:\Program Files\MiKTeX 2.9\miktex\bin\x64\;

Figura 1.1: Variable de Entorno Windows

7
Objetos en R

1.1 Creando y asignando valores


Para asignar valores a objetos se usa estos símbolos:

< -

Como cualquier otro lenguaje de programación, existe ciertas reglas al crear


variables u objetos por ejemplo en el lenguaje R al usar la palabra “variable” con
“Variable” son distintas así que se considera como otro objeto. El uso de números
como nombre del objeto esta prohibido por ejemplo “12datos,9mos”, por favor
tome nota.

variable <- c( )

contenido
o
elementos

en se crea un objeto con ele¬


mentos numéricos.

en muestra otra forma de


crear el objeto.

9
10 CAPITULO 2. OBJETOS EN R

Claro que al nombrar usted puede toparse con nombres de funciones internas
como “sd, var, cor, arima, pf y entre otros”, si le ha sucedido entonces se habrá
dado cuenta que el objeto creado funciona con normalidad pero ello reemplaza
a la función y para retornar a su normalidad solo use rm(nombre_objeto). A
continuación se presentará algunos casos en donde genera error al nombrar
objetos.

Cuadro 2.1: Nombres de Objetos

OBJETOS
1/ Validos X Inválidos
datos<- c () %datos <- c ()
datos 98 <- c () datos% <—c ()
datos_l <- c () 98datos <- c ()
[Link] <- c () _datos <- c ()

.datos <- C()

1 No es específicamente un error(.),
sino que no se puede crear el objeto
por falta de referencia.

1.1.1 Tipos de datos


En R hay distintos tipos de datos que usted puede crear y dentro de los más
conocidos están los siguientes:

Cuadro 2.2: Tipo de dato en R

Valores Tipo ¡
a < - 14 numérico
a < - FALSE booleano
a < - “b” carácter
a < - 6L entero “usar L alJinal”
a < - l+6i complejo

Para tratar de saber que tipo de objeto es el que se ha creado, se usará las
siguientes funciones:

10
11
1. CREANDO Y ASIGNANDO VALORES

Cuadro 2.3: Veriñcar el objeto

Función Especificación
class() Categoriza en forma general el objeto y también sirve para
interpolar 1
typeof() Determina el tipo interno del objeto, ejem “NULL,double y
otros”
length() Retorna la longitud de datos en un objeto
attributes () Sirve para verificar si el objeto tiene algún metadato,objeto
complejo
mode() Similar a typeof pero su clasificación es distinta

1 Específicamente puede hacer que class (x) <- c ("ob j "), agrega un
atributo.

> a <- c(FALSE,2,3,5.2)


> class (a)
[1] "numeric"
> typeof(a)
[1] "double"
> length(a)
[1] 4
> attributes(a)
[1] NULL
> mode(a)
[1] "numeric"

11
12
CAPITULO 2. OBJETOS EN R

2.1.2 Clases de objeto


Si se quiere crear un objeto con diferentes tipos de datos “como se muestra
en la tabla 2.2”, o si son en gran cantidad como por ejemplo big data. Entonces
obligatoriamente se tiene que trabajar con una clase que mejor se adapta a
nuestras necesidades, a continuación se muestra las clases más usadas:

Cuadro 2.4: Funciones para crear clase de objetos

Clase Especificación ¡1
vectorO Crea un vector numérico.
factor() Usado para codificar un vector en categorías o
escalas.
listo Crea una lista de datos por separado.
matrix() Crea una matriznxm.
raw() Crea un vector crudo que almacena longitudes
fijas de bytes.
[Link] ame Q1 Acepta todo tipo de datos y es muy usado.

En “vector{mode=" ", length=}” crea un vector de datos definido por un


modo y un tamaño, recuerda que solo genera elementos repetitivos como por
ejemplo: vector {mode="numeric" , length=10} generará dies veces cero. A con¬
tinuación algunos modos que son aceptados:

mode -4 “list, numeric, logical, character,complex, raw”

length -4 acepta valores numéricos, ejemplo: 10

> vector(mode="complex", length=10)


[1] O+Oi O+Oi O+Oi O+Oi O+Oi O+Oi O+Oi O+Oi O+Oi O+Oi

1 esta clase es muy usado con knitr para crear tablas tipo APA con la librería kable, para saber
su funcionamiento escribir en consola lo siguiente ?[Link] , intentar con las otras clases lo
mismo ?clase , cambiar clase por “vector,factor,list y otros”

12
1. CREANDO Y ASIGNANDO VALORES
13

Creando un Objeto factor

factor(x .levels .labels .ordered )


(objeto) Necesita un vector de datos cu¬
X
yos valores coincidan con levels.

levels (numeric) Los niveles o escala de datos.

(string o numérico) La etiquetas a la


labels
escala (levels)

ordered (booleano) Permite ordenar los levels.

A continuación se mostrará un ejemplo sobre como


funciona:

> etiqueta <- c("Nada Satisfecho","Poco Satisfecho",


"Satisfecho","Muy Satisfecho")
> db <- c (3, 4, 2, 1, 4, 2, 3, 4, 2, 1, 4 ,2,
1, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 4,
1, 3, 1, 1, 3, 4, 4, 3, 4, 3, 4, 1)

> liker <- factor(x = db ,levels = c(l:4),


labels = etiqueta )

Ahora si se quiere ver como almacena esta clase factor:

> liker

[1] Satisfecho Muy Satisfecho Poco Satisfecho Nada


Satisfecho
[5] Muy Satisfecho Poco Satisfecho Satisfecho Muy
Satisfecho

[29] Satisfecho Muy Satisfecho Muy Satisfecho Satisfecho


[33] Muy Satisfecho Satisfecho Muy Satisfecho Nada
Satisfecho
Levels: Nada Satisfecho Poco Satisfecho Satisfecho Muy
Satisfecho

Con un toque estadístico:

13
14
CAPÍTULO 2. OBJETOS EN R

>
Nada
summary(liker)
Satisfecho
#
Poco
—> cantidad
Satisfecho Satisfecho
L.1 Muy Satisfecho
14 4 6 12

> [Link](summary. factor(liker) ) # proporción


Nada Satisfecho Poco Satisfecho Satisfecho muy satisfecho
0.3888889 0 .1111111 0.1666667 0.3333333

Errores comunes al crear un factor

Error en levels

> liker <- factor(x = 11 ,levels = c(l:3) ,labels =


etiqueta )

Error in factor(x = 11, levels = c(l:3). labels =


etiqueta) :
invalid 'labels'; length 4 should be 1 or 3

Error en labels

> etiqueta <-


c("Nada Satisfecho" , "Poco Satisfecho" , "Satisfecho" '
> liker <- factor(x = 11 ,levels = c (1:4),labels =
etiqueta )

Error in factor(x = 11, levels = c(l:4), labels =


etiqueta) :
invalid 'labels'; length 3 should be 1 or 4

En (JlJ) indica que las escalas (1 a 4) de levels debe ser igual a labels . Lo

mismo sucede en en (2 ) pero con labels.

14
1. CREANDO Y ASIGNANDO VALORES
15

Creando un Objeto matrix


an ai2 3l3 '' ' ain

321 a22 a23 ■ ■ ■ a2n

matrix(data ,nrow ,ncol ,byrow, dimnames ) a3i a32 a33 a3n


^41 a42 a43 a4n
(vector) Necesita un vector de da¬ asi a52 353 a5n

data tos cuyos valores coincidan con le¬ 961 a62 363 a6n
a7i a72 373 a7n
véis.
asi a82 a83 asn
agí 9g3
(numeric) Numero de filas(n) que ag2 agn
nrow
tiene el vector de datos
ami 9m2 9m3 9mn
(numeric) Numero de columnas(m)
ncol
que tiene el vector de datos

(booleano) Se rellena por filas so¬


byrow lo si es TRUE, caso contrario es
columnas.

(list) Agrega nombre a filas y


columnas, esto depende de
dimnames
la longitud de ncol y nrow.
dimnames= list(c("filas"),c(

Dato importante: el numero de columnas (ncol) y filas (nrow) deben


SER SUBMÚLTIPLO DE LA LONGITUD DE TODOS LOS ELEMENTOS, EN CASO DE NO
SERLO TE GENERARÁ UNA ADVERTENCIA.

> mt <- matrix(data= 1:16, nrow = 4, ncol = 4)


> mt
[,1] [/ 2] [, 3] [,4]
[1,] 1 5 9 13
[2, ] 2 6 10 14
[3, ] 3 7 11 15
[4,] 4 8 12 16

Por cierto si la longitud en filas (nrow) y columnas (ncol) superan la cantidad


de elementos que son 16, por ejemplo ncol = 2, nrow = 9 (9*2 = 18)

> mt <- matrix( data = 1:16, nrow = 9, ncol = 2)

entonces generará una advertencia

15
16 CAPITULO 2. OBJETOS EN R

Warning message:
In matrix(data = 1:16, nrow = 9, ncol = 2) :
la longitud de los datos [16] no es un
submúltiplo o múltiplo del número de filas
[9] en la matriz

y llenará esa diferencia repitiendo los elementos iniciales como es el caso


siguiente:

Ahora se observará como funciona el argumento byrow que significa


¿DESEA ORDENAR LOS DATOS POR FILA?

> mt <- matrix( > mt <- matrix(


data= 1 :9, data= 1: 9,
nrow = 3, nrow=3.
ncol = 3, ncol= 3,
byrow = F) byrow=T)
> mt > mt
[,1] [,2] [,3] [,1] [,2] [ ,3]
[1, ] 1 4 7 [1, ] 1 2 3
[2, ] 2 5 8 [2, ] 4 5 6
[3, ] 3 6 9 [3, ] 7 8 9

16
17
1. CREANDO Y ASIGNANDO VALORES

Se intentará ahora dar nombre a filas y columnas. Se debe entender


QUE EL TAMAÑO DE FILAS DEPENDE DE NROW Y EL TAMAÑO DE COLUMNAS DE
NCOL

Tomaremos como ejemplo una matriz3*2

> mt <- matrix(c(1:6),nrow=3,ncol=2)

dimnames = list(fila, columna)


rownames y colnames

#-
#-
> dimnames(mt) <- list(
> rownames(mt) <- c("fl","f2",
c("fl","f 2","f 3"),
" f3 " )
c ("el","c2") )
> colnames(mt) <- c("cl","c2")
#-
#-—-
> mt
> mt
el c2
el c2
fl 1 4
fl 1 4
f2 2 5
f2 2 5
f3 3 6

17
18 CAPITULO 2. OBJETOS EN R

Creando un Objeto [Link]

[Link](... ,row. ñames)

(objeto) Agregar los objetos creados an¬


teriormente.

Proporcionar cual columna será tomada


[Link] r
como nombres para mas.

Nota: Los tres puntos significa argumentos

El [Link] acepta todo tipo de elementos como son los


objetos tipo matrix, factor y vector, pero el único inconveniente
es que la longitud de las filas de cada objeto deben ser iguales

length(xl) = length(x2) = length(x3) = nrow(b)

#-
# vector
> xl = c(letters[1:8; )
> x2 <- c(1:8)
# Factor
> x3 <- factor(x = c (4,2,4,1,2,1,4,4), levels = c(l:4).
labels = c ("Nada Satisfecho","Poco Satisfecho",
"Satisfecho","Muy Satisfecho") )
# Matrix
> b <- matrix(data = c(l:16),nrow = 8,ncol = 2)

18
19
1. CREANDO Y ASIGNANDO VALORES

recuerda que b <- matrix() tiene dos columnas.

[Link] = columna l("lb") [Link] = columna 5("c")

#-
> tb <- [Link]("lb"= xl, > tb <- [Link]("Ib"= xl,
"a" = x2, "a" = x2,
"b" = x3, "b" = x3,
"c"= b, "c"= b,
[Link]=l) [Link]=5)
> tb # usar View(tb) > tb # usar View(tb)

a b c. 1 c. 2 ib a b c. 1

a 1 Muy Satisfecho 1 9 9 a 1 Muy Satisfecho 1


b 2 Poco Satisfecho 2 10 10 b 2 Poco Satisfecho 2
c 3 Muy Satisfecho 3 11 11 c 3 Muy Satisfecho 3
d 4 Nada Satisfecho 4 12 12 d 4 Nada Satisfecho 4
e 5 Poco Satisfecho 5 13 13 e 5 Poco Satisfecho 5
f 6 Nada Satisfecho 6 14 14 f 6 Nada Satisfecho 6
g 7 Muy Satisfecho 7 15 15 g 7 Muy Satisfecho 7

19
20 CAPITULO 2. OBJETOS EN R

es un caso muy conocido tratándose de la coma al final, se entiende que la


coma separa cada argumento de uno nuevo y si no hay uno nuevo entonces
este error te generara.

se trata del tamaño de las filas de cada objeto, como se observa en el primer
objeto hay “length (xl) = 6” y el otro objeto existe “length (x2) = 8” significan¬
do distintas filas. Es muy importante que en [Link] se tenga los objetos
con la misma longitud de filas.

“Uso de library(tidyverse) ”

O Instale este paquete install .packages ("tidyverse") y


usar tibble () en vez de [Link]

20
21
1. CREANDO Y ASIGNANDO VALORES

Creando un Objeto list

list(... )

(objeto) Significa que acepta n objetos


de distintas clases (matrix, [Link]
y otros como funciones) con sus respec¬
tivos nombres.

Almacena los objetos en listas independientes, lo


de bueno de list es que permite agregar clases de
objeto como matrix, vector, [Link], raw y hasta es posible funciones con
fórmulas “summary”. Además no es importante que dichos objetos tengan la
misma longitud en filas y columnas ya que de igual forma serán incluidas.

Por ejemplo:
Se tratará de crear objetos de distintos tipos de clases, como son “vectores,
factor, [Link] y matrix”

#-
> xl = c(letters[1:8] )
> x2 <- c(1:8)
# Factor
> x3 <- factor(x = c(4,2,4,1,2,1,4,4), levels = c(l:4),
labels = c("Nada Satisfecho","Poco Satisfecho",
"Satisfecho", "Muy Satisfecho") )
# [Link]
> tb <- [Link]("lb"= xl, "a" = x2)
# matrix
> mt <- matrix(data= 1:9, nrow=3, ncol= 3, byrow=T)

Una vez creado los objetos “observa el último argumento que es una función”.
Entonces para combinar todo en una lista se tiene que hacer lo siguiente:

> lista <- list (x2,x3,tb, mt, summary(x3))

Dado que se trata de una lista con múltiples objetos incrustados, entonces
únicamente se puede ver a través de consola escribiendo lo siguiente:

21
22
CAPITULO 2. OBJETOS EN R

#-
> lista
#-
[ [1] ]
[1] 1 2 3 4 5 6 7 8

[ [2] ]
[1] Muy Satisfecho Poco Satisfecho Muy Satisfecho Nada
Satisfecho
[5] Poco Satisfecho Nada Satisfecho Muy Satisfecho Muy
Satisfecho
4 Levels : Nada Satisfecho Poco Satisfecho ... Muy Satisfecho

[ [3] ]
Ib a
1 a 1
2 b 2
3 c 3
4 d 4
5 e 5
6 f 6
7 g 7
8 h 8

[ [4] ]
[, 1] [,2] [, 3]
[1, ] 12 3
[2, ] 4 5 6
[3, ] 7 8 9

[ [5] ]
Nada Satisfecho Poco Satisfecho Satisfecho Muy Satisfecho
2 2 0 4

Observa el caso “[[5]]” de summary(x3) que también puede ser incluido dentro
de la clase listQ •

22
23
1. CREANDO Y ASIGNANDO VALORES

3.1.3 Ordenar datos


Los datos en R se ordenan usando el comando sort()

> datos <- c(5,6,3,4,l)


> ordenado <- sort(datos]
> ordenado
[1] 1 3 4 5 6

4.1.4 Valores aleatorios


Hay muchas funciones que generan valores y que estos pueden retornar datos
ordenados como también aleatorios pero dentro de los más usados tenemos estas
funciones:

Cuadro 2.5: Funciones para crear valores

¡ Función ¿Que hace? ¡


Crea una lista de números ordenados que empie¬
c(l:n)
zan desde 1 hasta n.

Genera números desde, hasta y por cuanto au¬


seq(from, to, by )
menta.

Repite el dato(no objeto) x n veces Nota: n es


rep(x,n)
un valor numérico

Genera una secuencia de números muy parecidos


sequence(nvec)
a un triángulo.

Genera números aleatorios con un límite de nú¬


runiffn, min, max) meros “n” que se encuentran entre un mínimo y
máximo.

Genera números aleatorios de un objeto x pero


sample(x, size, replace) esta vez cuenta con la opción de hacer que no se
repita el mismo número.

> vi <- c (1:5)


> vi
[1] 1 2 3 4 5
#-

23
24 CAPITULO 2. OBJETOS EN R

> v2 <- seq(l,10,2)


> v2
[1] 1 3 5 7 9
#-
> v3 <- rep(letters[2] , 5)
> v3
[1] "b" "b" "b" "b" "b"
#-________

#-
> tmp <- c(4,2)
> v4 <- sequence(tmp)
> v4
[1] 1 2 3 4 1 2
#-
#-
> v5 <- runif(6,l,5)
> v5
[1] 1.766615 2.726120 1.646968 1.148724 3.180554 2.160788
#-
#-
> v6 <- sample(1:20,5,replace = T)
> v6
[1] 14 12 5 17 1

24
2. MODIFICAR
25

2.2 Modificar
En las secciones anteriores se ha visto como se crea el objeto y que elementos
son permitidos para esa clase de objeto. Las siguientes secciones se hablará sobre
la edición o modificación de los elementos del objeto, para ello se ha divido en dos
secciones que consta las dimensiones de los objetos.

1.2.1 índice para objetos de una dimensión


Para poder modificar datos de un objeto es necesario conocer el índice o el
orden como es que R los almacena

i mi
objeto <- c( 5, 4, 7, 8, 12, )

1 2 3 4 5
índice

Comenzando por el primer elemento que es 5 su índice sera 1, el elemento 4 su


índice 2 y así sucesivamente para los otros elementos. En R se usa dos corchetes
que dentro de ello se coloca el índice [índice].

Para modificar el valor solamente se agrega el símbolo ” o el “=” y después


el valor nuevo

> datos[1] = 12
> datos[3] = 21
> datos
[:L] 12 4 21 8 12 3

25
26 CAPITULO 2. OBJETOS EN R

Si lo que desea es modificar múltiples datos entonces use c(n)2 , donde n


pertenece a los indices a cambiar. Claro que tiene que ser de la misma longitud
“n:indices y n:valores nuevos”.

> datos [c (1,3)] = c (3,5)


> datos
[1] 3 4 5 8 12 3
> datos [c (2,4,5) ] = c(22,24,14)
[1] 3 22 5 24 14 3

2esto es un vector de datos por ejemplo c(l,2,3,4) no confundir con la función vectorQ

26
27
2. MODIFICAR

2.2.2 índice para objetos de dos dimensiones

Para ubicar un dato en especifico de una matriz o un [Link], se entiende


que las filas (n) son todos los datos en forma horizontal y las columnas (m) son
todos los datos en vertical, si usamos (n) y (m) entonces apunta hacia un dato
específico, por ejemplo:

> mat

Se va a tratar de sacar todos los datos en forma diagonal, por favor prestar
atención a los indices.

> mat [1,1]


[1] 1
> mat[2,2]#fila 2 y columna 2
[1] 1
> mat[3,3]
[1] 1

Para cambiar datos solamente se necesita usar “< —”, es muy parecido al
proceso que se hizo anteriormente.

27
28 CAPITULO 2. OBJETOS EN R

> mat [1,1; <- 4


> mat[2,2[ <- 3

m
> mat [3,3;

V
i
> mat
[,1] ,2] [,3;
[1, ] 4 0 0
[2, ] 0 3 0
[3, ] 0 0 5

3.2.3 Modificar un [Link] y vectores

Un dataframe no es nada mas que un cuadro de datos que permite almacenar


diferentes tipos de datos, aquí hago presente algunas funciones que nos facilitan
el trabajo.

Cuadro 2.6: Funciones que permiten agregar objetos al [Link]

Función Especificación f
cbind (df, nuevo) Agrega columnas al [Link] Nota: tener el mis¬
mo tamaño de ñlas(n).
rbind (df, nuevo) Agrega filas al [Link] Nota: tener el mismo
tamaño de columnas (m).
retorna la longitud de datos en un objeto
attributesO sirve para verificar si el objeto tiene algún meta-
dato, objeto complejo
edit(objeto) Una forma visual de modificar datos Nota: Es un
editor de datos

28
29
2. MODIFICAR

> el <- c (2,2, 2, 2)


> fl <- c (1, 1, 12)
#-
> tb <- [Link]("x"= sample(20:60, 4,replace = F),
"y"= round(runif(4,min = 10,max = 20),2)
#---

# Agregar columna
> tb < - cbind(tb,cl)
> tb
X y el
1 54 12.57 2
2 27 12.72 2
3 48 13.89 2
4 40 10.42 2

#-
# Agregar fila
> tb < - rbind(tb, f1)
> tb
X y el
1 54 12.57 2
2 27 12.72 2
3 48 13.89 2
4 40 10.42 2
5 1 1.00 12

#-

# Ver atributos de la tabla


> attributes(tb)
$names # solo usa attributes(tb)$names
[1] "x" "y" "el"

$row.ñames # solo usa attributes(tb)$row.ñames


[1] 1 2 3 4 5

$class # solo usa attributes(tb)$class


[1] "[Link]"

Si lo que se busca es dar una manipulación mas avanzada en una clase


[Link], entonces debes instalar la siguiente librería que sera de mucha

29
30 CAPITULO 2. OBJETOS EN R

importancia.

r
> [Link]("[Link]")

> library([Link])

^Nota: Se necesita internet para la instalación del paquete

Se intentará crear una tabla mixta con el objetivo de tomarlo como referencia.

> el <- rep(2,15)


> fl <- c(1, 1,"nada") X y f el
> f <- factor(x = 29 12.39 poco 2
sample(1:4,15,replace=T), 37 11.84 medio 2
levels = c (1:4), 31 15.61 medio 2
labels = c("nada", 20 17.31 poco 2
"poco","medio","alto")) 38 10.3 medio 2
43 17.89 poco 2
> tb <- [Link]( 47 11.65 nada 2
"x"= sample(20:60, 25 19.98 poco 2
15, replace = F) , 46 19.86 medio 2
"y"= runif(15,min = 51 16.61 poco 2
10, max = 20) , 44 12.7 poco 2
"f"= f ) 52 10.33 alto 2
53 16.16 alto 2
> tb <- cbind(tb,cl) 34 14.56 poco 2
> tb <- rbind(tb,f1) 48 15.53 nada 2
#- 1 1.00 nada 1
Convertir a [Link]
#- Nota: En la colum¬
> tabla <- [Link](tb)
na “y” se ha usado
round(runif( ),2)

tabla [i, j, by]


Donde:
i filas (primer argumento)
j columnas [segundo argumento)
by agrupado por [tercer argumento)

30
2. MODIFICAR
31

Extraer datos por filas

Para extraer determinadas filas, en el entonces debe usar%like%, o si es el ca¬


primer argumento [l:n,] agregar valores so de encontrar elementos que se encuen¬
numéricos. tran entre a y b, usar%between%.

> tabla[1:4, ] > tabla[x%like%29 ]


x y f el X f el
Y
1 29 12.39 poco 2 1 29 12 39 poco 2
2 37 11.84 medio 2 4j-
3 31 15.61 medio 2 > tabla[y%between %c(11,12)]
4 20 17.31 poco 2 X f el
Y
1 37 11 84 medio 2
2 47 11 65 nada 2
También puedes usar una condicional
para restringir los elementos que desea
ver [a < n] donde “a” es el nombre de Hay una función que permite extraer
la columna. valores únicos de la tabla por ejemplo la
columna “f”, usar “unique (tabla, by) ”.
> tabla[y<ll,]
x y f el > unique(x=tabla. by=c("f"))
1 38 10.30 medio 2 x y f el
2 52 10.33 alto 2 1 29 12.39 poco 2
3 1 1.00 nada 1 2 37 11.84 medio 2
3 47 11.65 nada 2
4 52 10.33 alto 2
Si se busca un elemento en específico

Extraer datos por columnas

Para solo ver algunas columnas se ne¬ La función que permite ordenar colum¬
cesita ya sea sus nombres como (xy í) o nas es “setorder(tabla,-a,b)” por (-,+) es
el número (1 y 3). (descendente, ascendente).

> setorder (x = tabla,x,y )


> tabla [, c (1,3) ] > tabla
> tabla [/ . (x, f) ] X y f el
X f 1: 1 1. 00 nada 1
1: 29 poco 2: 20 17. 31 poco 2
3: 25 19. 98 poco 2

16: 1 nada 16 : 53 16. 16 alto 2

31
32
CAPITULO 2. OBJETOS EN R

Para mas información visite su repositorio en github


[Link]

3.3 Eliminar

1.3.1 Objeto
Si se tiene un objeto similar “variable” y se quiere eliminar por completo
del sistema con el objetivo de reducir espacio en memoria entonces seria muy
oportuno usar la función rm() claro que para eliminar múltiples objetos entonces
usar coma.

> rm(variable)
> variable
Error: objeto 'variable' no encontrado
># -> eliminar múltiples objetos <-
> rm(a, b, c, mat, df)
> exists("a");exists("b");exists("c");exists("mat");exists("df")
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE
[1] FALSE

2.3.2 Un elemento o columna


En el tema de modificar se había usado un índice para ver un dato en especifico
y bueno en este apartado usaremos el mismo método pero anteponiendo a cada
índice un signo negativo indicando la eliminación de dicho dato, por ejemplo:

> a <- c(1:4) Importante: Usar -n para retirar


> a <- a[-3] # [ —n] valor con referencia al índice y en
> a cuanto a -c() L el signo menos con¬
[1] 124 vierte a todos los datos dentro del
> #eliminar múltiple paréntesis a negativo significando lo
> a <- a [ —c (1, 2) ] #-c () mismo c(-l,-2)
> a Cuando solo se escribe únicamente
[1] 4 a[-3] imprime en consola los cam¬
bios pero no los almacena y por ello
el uso de a < —.

32
3. ELIMINAR
33

[Link] ame

I
Es bueno recordar que esta acción no es posible en dataframe:

Nota: no se puede eliminar un dato en específico de una


columna dado que las dimensiones serían distintas.

Pero lo que se puede hacer es eliminar filas completas y columnas, preste


atención a este código

> dt = [Link](
"hl"=c(runif(5,40,64)),
"h2"=c(sample(2:25,size = 5)
hi hi
|1 50.43018 15 |

> dt[-c(l,4),] # eliminar n = -1, -4


2 53.59845 18

hl h2
3 46.13610 16

2 53.59845 18 |4 61.00323 H|
5 55.03759 19
3 46.13610 16
5 55.03759 19
> dt <- dt[-c(l,4),] # almacenar en dt

Para seleccionar una columna se necesita usar el símbolo por ejemplo


nombre$columna le decimos que sea igual a una acción llamada “NULL”.
X
hi h2
> dt$hl <- NULL 2 53.59845 18
3 46.13610 16
5 55.03759 19

33
34
CAPITULO 2. OBJETOS EN R

34
Repetidores y Condicionales

1.1 Repetidor

1.1.1 For
El repetidor For crea un ciclo de elementos de un objeto establecido for (va¬
riable in obj). El in indica de que objeto (obj) se extraerá los elementos y los
almacena en variable.

Datos a tener encuenta:

✓ No necesariamente debe llamarse i por ejemplo: salida,tmp y otros.

✓ El objeto a repetir debe tener una longitud mínima de un dato c(dato).

✓ Es importante que este entre paréntesis “()”.

Para obtener cada elemento de una matriz o un [Link] entonces se usará un


doble bucle For

> dt = [Link]("x"=c(sample(1:15, size = 5)),


"y"=c(sample(2:25,size =5)),

35
36 CAPITULO 3. REPETIDORES Y CONDICIONALES

"z" = sample(30:65,size = 5),


row.ñames =c("a","b","c","d","e") )

#-□— por columna


#-0 -- por fila
> for (i in l:ncol(dt)){ ^ > for(i in l:nrow(dt)){
for (j in l:nrow(dt)){ for(j in l:ncol(dt)){
print(dt[j,i]) print(dt[i,j])
} }
}
}

#-□— por nombres fila #-FH--todos


> for (i in rownames (dt) ) { > for (i in dt) {
print(i) print(Ib)
} }

Tips en código

En ncol(dt) = dim(dt) 2 y también nrow(dt) = dim(dt)[ 1]


por si quieres evitar el 1: entonces aquí tienes una alternativa
l:nrow(dt) = seq_len(dim(dt)[ 1])

;i 2 3| ;i 2 3j
X y z
1 a 6 18 63
2 b 9 14 58
3 c 13 5 45
4 d 8 13 43
5 e 11 11 46

n el primer for genera números de 1 hasta m columnas y el segundo for genera


desde 1 hasta n filas:

36
37
1. REPETIDOR

m el primer for genera números de 1 hasta n filas y el segundo for genera desde
1 hasta m columnas:
i

Q Aquí solamente extrae los nombres por filas y seguramente ya los conoces.

D En esta parte el for extrae todos los elementos del objeto dt, no confundir con
los otros que solamente generan el índice. Es importante aclarar que genera
una longitud > 1 y no es posible usar if en ello.

37
38 CAPITULO 3. REPETIDORES Y CONDICIONALES

2.1.2 While

La función while es un repetidor con una condición que mientras sea cierta
entonces se ejecutará todo el pedazo de código que se encuentre dentro, por
ejemplo tengo un objeto

> obj <- c(l:10)

después creo un while con la condición mientras obj sea menor de 10 entonces
se ejecutará el otro código donde imprima “hola mundo”, ten cuidado con este
tipo de condiciones que hace repeticiones infinitas dado a que siempre retornara
un TRUE

> a = 1
> while(a < 8){
print( paste("hola", a, sep = )
a = a+1
}

Retornará “hola— >i” donde ¿e{l, • • • 7}, así que se repetirá siete veces por el
motivo de la condición.

38
39
1. REPETIDOR

3.1.3 Repeat
Es un repetidor sin condiciones, así que se tiene que colocar una condición
para que finalize y se usará un break para que finalize repeat{ }, a tener mucho
cuidado al usar esta función

La función repeat crea un ciclo ilimitado de repeticiones y solamente parará si


se controla con una condición.
El caso del objeto “re” solo nos sirve como contador y por defecto el valor
principal es “0”, dentro de la función repeat observe que “re” se suma el valor
actual del mismo con una unidad, o sea (0+1,1+2,3+1,...). En la condición ha sido
colocado un valor máximo de 10 repeticiones que “re” puede tomar.

39
40 CAPITULO 3. REPETIDORES Y CONDICIONALES

2.2 Condicional
Antes de empezar, usted debe conocer los operadores lógicos en su totalidad
y para ello se ha preparado las siguientes tablas donde indican cuales son los
símbolos y como funcionan

Cuadro 3.1: Símbolos usados para comprobar elementos

1 Operador lógico ¿Que hace? j


i Niega a toda la falacia (!p == q) retornando un
valor lógico contrario.

El “and” retorna valores lógicos para cada ele¬


&
mento condicionado. 1

Solamente retorna un solo valor lógico, es True


&&
cuando solo ambos elementos lo son

1 El “or” retornar valores lógicos por cada elemento

Solamente retorna un solo valor lógico y es FALSE


II cuando ambos elementos se contradicen.

Figura 3.1: Función con varios operadores lógicos

for (i in a){
for (j in b){
if( ){
}
}
}

Cuadro 3.2: Operadores Lógicos

p q & 1 xor(p,q)
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE FALSE

1 por ejemplo a = c(l:8) y uso la siguiente condición a>2 & a<8 esto retorna ocho valo¬
res lógicos. Pero si hago lo siguiente a>2 && a<8, entonces retorna un solo valor lógico.

40
41
2. CONDICIONAL

Cuadro 3.3: Símbolos usados para comprobar o relacionar elementos

Símbolo ¿Que hace?


a[i] == b(j] sirve para verificar si a es igual que b
a[i] <= b(j] verifica si a es menor o igual que b
a[i] >= b(j] verifica si a es mayor o igual que b
a[i] != b(j] verifica si a es diferente de b
a[i] %in % b verifica si el elemento a[i] se encuentra en el objeto b

Cuadro 3.4: Veriñcar y Convertir

Verificar Convertir
[Link]([Link]) as. vector ([Link])
[Link](x) [Link](x)
[Link](x) [Link](x)
[Link](x) [Link](x)
[Link](x) [Link](x)
is. data, frame (x) [Link](x, [Link])
[Link](x)
[Link](x)
[Link](x) [Link](x)
is. numeric .Date (x) as .Date. character(x)

1.2.1 If
En esta sección la sentencia “if’ cuestiona si se ejecuta o no una parte del
código que esta dentro de llaves “{ • • • }” sin embargo en el lenguaje R nos ofrece
dos formas de usar la sentencia if.

Modo Reducido
Contamos con una función sencilla llamada
ifelse(comprobar,retornal,retorna2)
en comprobar se tendrá que colocar el (objeto más la condición) que se desea
veriñcar y si esto es verdad(TRUE ) entonces retorna 1 caso contrario retorna2.
Por ejemplo:

> a = c(runif(5,40,64))
[1] 60.36799 52.96228 48.25127 42.66303 44.14928
> ifelse(a>45,"si","no")
[1] "si" "si" "si" "no" "no"

41
42
CAPITULO 3. REPETIDORES Y CONDICIONALES

Comprobar si hay números pares

> a = round(runif (5, 2, 10) , 0)


> a
[1] 10 5 9 5 5
> b = c (2, 4, 6, 8)
> c = c (1, 3, 5, 7)
> ifelse (a%%2==0, b, c)
[1] 2 3 5 7 1

En primero uso la función round(objeto,redondear) para redondear valo¬


res por el motivo que runnif genera valores con decimales.
En verifico si cada elemento de a es par y uso un módulo (% %2== 0) que
se encarga de ello.

Si quieres que sea mas eficiente con respecto a velocidad de procesado, enton¬
ces usa lo siguiente:

> dplyr::if_else(condición,si,no, missing=3)

Funciona igual que el otro con la diferencia que en si y no tiene que ser el mismo
tipo de datos y la misma longitud. En missing hace referencia a valores nulos (NA)
y permite cambiarlos por otros valores como es el caso de 3 (no compara).

> require(dplyr)
> a = c (10, 5, 9, 5,NA) # n=5
> b = c(2,4,6,8,10) # n=5 --> numeric
> c = c(l,3,5,7,9) # n=5 --> numeric
> dplyr::if_else(a%%2==0,b,c,missing=ll)
[1] 2 3 5 7 11

Modo Completo
Es probable que sea el más usado en programación ya que permite agregar
código dentro del paréntesis y esto es muy bueno por el motivo que separa entre
cual se ejecuta y cual no. El if en español “si”se entiende como: Si el objeto
es menor que 8, entonces se ejecuta print e imprime “trozo de código a”, caso
contrario pasa a ejecutarse print e imprime “trozo b”.

> if (objeto < 8){


# si es TRUE
print("trozo de código a")

42
2. CONDICIONAL
43

}else{
#si es FALSE
print("trozo de código b")
}

Dato Importante

Por si genera un error como esto:


the condition has length > 1 and only the first element will be used
Recuerda que el condicional if solo compara un elemento por objeto por ejem¬
plo df[elemento] == 2. Si deseas múltiples resultados y sin un for entonces
usa ifelse

43
44
CAPITULO 3. REPETIDORES Y CONDICIONALES

2.2.2 Switch
switch(expresion, case 1, case 2, case 3...,default)

Figura 3.2: Diagrama de flujo switch

bloque de codigo
defautt
{ ••• }
Cuando usted se encuentra en un mercado y observa que hay n marcas del
mismo producto que desea y por lo general ofrecen el mismo resultado pero usted
quiere una marca en especifico, entonces se acerca al vendedor para preguntar
por dicha marca.

El funcionamiento de switch es lo mismo por el motivo de que los casos (case


n) con el cual se compara ya están dadas y solamente se esperaría escribir con
que elemento (expresión u objeto) se desearía encontrar una igualdad.

44
2. CONDICIONAL
45

print("no disponible")
)

En es una entrada de datos que manualmente usted tiene que escribir,


puede recibir error si hace un mal uso de esta función.
En se conoce como default indicando que si las demás no se cumple
entonces ésta se ejecuta.

Nota importante

No puedes condicionar objetos que tenga n elementos (superior a un elemen¬


to), es posible que encuentres este error:

Error in switch(ñames(dt), x = print("cierto")) :


%EXPR must be a length 1 vector

No puedes terminar en coma cuando estés en el ultimo case, este error te


generará:

Error: duplícate 'switch' defaults: 'print("no ...' and ''

por ejemplo en el esta linea no termina en coma y no te va a generar


error.

45
46 CAPITULO 3. REPETIDORES Y CONDICIONALES

3.2.3 Which
which(x, [Link], useNames)

X Es el objeto con el operador lógico.

[Link] Si es TRUE entonces el objeto es una matriz caso


contrario un vector común.

useNames Si el objeto es una matriz, entonces al hacer use-


Names=TRUE muestra los nombre de filas, caso
contrario mostrará números.

Esta función solo retorna el índice del elemento que se encuentran en dicha
condición y esta dada dentro del paréntesis which(condición). Dicho esto which
significa cual y en español seria por ejemplo: ¿cual elemento del obj es igual a 3?
which(obj==3).

46
47
2. CONDICIONAL

Se interpreta como mat[l,3] = 0 y esto demuestra ser menor que 2.


mat[row,col]

Puede usted visitar el repositorio github y encontrará todos los comandos


escritos en este capitulo, recuerde visitar en este enlace [Link]
com/Moriand/Apuntes-R

47
o
■J
£
H
'HH

Oh

<
O

Atrapando Errores

En muchas ocasiones usted al intentar ejecutar una función o un script se ha


topado directamente con muchos errores y que en cuestión le han imposibilitado
ejecutar correctamente todo el código, pero por suerte casi en su gran mayoría de
los paquetes siempre tienen esta función y es de vital importancia saber como es
su funcionamiento y en que nos puede beneficiar.

1.1 try
Significa “intentar” y ofrece solo una opción que es “silent” siendo un booleano.
Esto permite omitir los mensajes que pueden aparecer si la expresión escrita
"• • • "genera algún tipo de alerta.

try(...,silent=TRUE)
Por ejemplo si tengo un vector de datos y a esto quiero sumarlo con un carácter
de la siguiente manera:

> mat <- c(l,4,2,6,4)

> try(mat+"a",silent=FALSE)
Error in mat + "a" : argumento no-numérico para operador
^ binario

49
50 CAPITULO 4. ATRAPANDO ERRORES

Obtenemos un mensaje, entonces si aplico silent=TRUE :

> try(mat+"a",silent=TRUE)
>

Omite el error y continua con la siguiente linea.

Le resultaría muy útil al tratar de omitir mensajes al hacer operaciones sencillas


como por ejemplo: sacar la inversa de matrices, multiplicar matrices y entre otros.

2.2 tryCatch
La palabra tryCatch hace referencia a intentar ejecutar el bloque de código y si
tiene error, lo captura y nos devolverá según se halla programado:

y bueno he aquí la pregunta.

¿Cuantos niveles hay?


Según la función tiyCatch considera dos tipos de niveles de errores

warning (leve) El tipo de mensaje que aparece como alarma pero en si hay un
funcionamiento (retorna valores), por ejemplo al crear una matriz con numero
total de elementos no son submúltiplos entre números de columnas.

error (grave) En este nivel el comando o función no llega a ejecutarse(no retorna


valores) y pasa a ser anulado por el mismo R.

tryCatch(
expr = {
# Operaciones...
# aquí...

},
error = function(e){
# si hay error
# ejecutar aquí

},
warning = function(w){
# si hay alarmas

50
2. TRYCATCH
51

# ejecutar aquí

},
finally = {
# (Opcional)
# se ejecutará como final
}
)

Tenemos aqui un ejemplo práctico.

51
52 CAPITULO 4. ATRAPANDO ERRORES

> matrices <- function(matriz_l,matriz_2){


tryCatch(
expr = {
matriz_l %*% matriz_2

},
error = function(e){
message('- error de dimensión -\n')
print(e)
},
warning = function(w){
message ( '-alarma-\n')
print(w)
},
finally = {
message ( '-final-')
}

}
#=

> a <- matrix(data c (2, 3,6,


3,8,7),nrow = 3,ncol = 3)

> b <- matrix(data = c (2, 3,6,3,


, , ,nrow
8,7 4 6) 2,ncol 4)
> #-
> matrices(matriz_l = a,matriz_2 = b)

- error de dimensión -
O
<simpleError in matriz_l %*% matriz_2: argumentos no

^ compatibles>

- final - ©

Primeramente es un error y es por eso que en imprime “message”, después


pasa a finally imprimiendo también “message”.

Si el error hubiera sido leve, pasaría a ejecutarse “warning”.

52
o
£>
H
M—(

Oh

<
O

Funciones en R

1.1 Funciones sin argumentos

Son las funciones sencillas de crear ya que no requieren de objetos exter¬


nos (argumentos) para funcionar correctamente, por ejemplo este es la estructura
de una función simple:

> clase <- function(){


# codigo —>
}

La palabra clase es el nombre la función, debes tener cuidado al nombrar ya


que por casualidad puedes toparte con nombres de funciones internas y esto crea
una función temporal que reemplazará por el creado (cierra el programa o elimina
la función con rm(nombre_funcion) y volverá a la normalidad). Como son en gran
cantidad las funciones internas no se los nombrará pero si los más importantes
“if, try,for, View,rm”.

53
CAPITULO 5. FUNCIONES EN R

Dato Importante

Este es el orden para poder usar una función correctamente:

1) Crear función “nombre_función = function(){ }”

2) Llamar > nombre_funcion (

También debes evitar usar caracteres con tilde en el nombre. Al llamar


debes usar los paréntesis después del nombre sino lo haces estarías impri¬
miendo la estructura de la función.

Si por casualidad quieres saber la estructura de la función, entonces simple¬


mente escribe en consola lo siguiente > nombre_funcion y listo. Para obtener
el valor de la función debes usar los paréntesis al final del nombre, por ejemplo
> nombre función

Observe este ejemplo que muestra de una forma más detalla como funciona:

> Nombre <- function(){


print("Hola Mundo")
}
> Nombre()
[1] Hola Mundo

> Nombre
function(){
O
print("Hola Mundo")
}

Por cierto también hay ocasiones en donde se comete errores al tratar de crear
funciones y dentro de los más cotidianos se encuentran los siguientes.

LOS DE LA IZQUIERDA SON LOS ERRORES Y DERECHA ES COMO CORREGIRLO:

54
1. FUNCIONES SIN ARGUMENTOS
55

Recuerda que si hay un error en alguna parte de la función o en el contenido


del código como print (), esto no ejecuta el bloque de código en su totalidad sino
mas bien te imprimirá un texto de color rojo indicando parte del error y algunas
pistas sobre donde esta el error generado.

55
56 CAPITULO 5. FUNCIONES EN R

2.2 Funciones con argumentos

Argumentos

Clase <- function(argumentl,argument2jargument3j.


¿p # fragmento codigo
>{
return( )

} retorna
un valor

Los argumentos no son mas que referencias que requiere la función para su
funcionamiento, se debe entender que estas referencias son objetos y que solo
estarán disponible dentro de la función. También se cuenta con un return(), ésto
sirve para hacer un retorno de solo un objeto o valor específico en toda la función.

# función simple
> Clase <- function(a){
tmp = log(a)/2
return(tmp)
}

Sin Referencia
Con Referencia

> Clase()
Error in Clase () :
el argumento "a" está
^ ausente,
sin valor por omisión

56
57
2. FUNCIONES CON ARGUMENTOS

Como se observa en la función Clase, tiene un objeto llamado a o bien puede


llamarse cualquier otro nombre, lo que debes entender es que este objeto solo
estará disponible dentro de la función y no fuera, ejemplo:

Error: objeto 'a' no encontrado.

Ahora el objeto a obligatoriamente tiene que recibir una referencia, caso con¬
trario genera un error.

Por ejemplo: se creará una función con dos argumentos “valor e inten¬
tos” donde valor recibe un número que se encuentre entre 1 y 10 e intentos
igual, dentro de la función (cuerpo) se tratará de crear un objeto temporal
que genera números aleatorios con un tamaño dado en el objeto intentos.
Después se creará un for para verificar si el objeto temporal es igual al valor.

#- función probar suerte


> suerte <- function(valor, intentos)!
tmp = sample(1:10,size = intentos, replace = F)
for (i in seq_along(tmp)){
if (tmp[i] == valor ){
return(print(" --> valor encontrado") )
}
}
return(print("inténtelo nuevamente"))
}

Por casualidad intenté con estos valores y he acertado, trate usted dar valores
numéricos:
> suerte(valor=2, intentos=4) > suerte(valor=6, intentos=4)
[1] "inténtelo nuevamente" [1] " --> valor encontrado"

57
58 CAPITULO 5. FUNCIONES EN R

¿ Que pasa si escribo mal la función?

En (1 ) elimine la última coma y en ( 2 ) agrege el paréntes que encierra a for

Creando un convertidor: se creará una función convert con dos


argumentos “dt y tipo” donde:

✓ dt Hace referencia al objeto que tiene los datos.

✓ tipo Hace referencia a que tipo de objeto deseas convertir.

Como primer paso se necesita verificar si el objeto a convertir no se encuentra


vacío

✓ Objeto vacío Imprimirá en pantalla una alerta detallada y no logrará


convertir.

✓ Objeto no vacío Usando switch() que depende del tipo se procederá


a convertir dicho objeto.

58
59
2. FUNCIONES CON ARGUMENTOS

#-> multiconvertidor
> convert <- function(dt, tipo="factor"){
if (! [Link](dt)){
switch(tipo,
"vector"= {
return([Link](dt))

},
"factor"= {
return([Link](dt))

},
"list"= {
return([Link](dt) )

},
"matrix"= {
return([Link](dt))

},
"raw"= {
return([Link](dt))

},
"[Link]"= {
return([Link](dt))

},
print("tipo no existe")

}else{
warning("Verifique si no esta vacio")
}

En vez de usar if intente con tryCatch(vea la sección 2, pagina 50) y observe


el comportamiento de la función creada.

59
60 CAPITULO 5. FUNCIONES EN R

Tkinter para abrir ficheros: Intentaremos crear una función para


abrir ficheros desde una interfaz.

Tkinter para guardar ficheros: Intentaremos crear una función pa¬


ra guardar ficheros desde una interfaz.

60
Otras Operaciones

1.1 Operador Pipe


El operador de tuberías o pipa “%>%” es muy usado en varios paquetes como es
el caso de dplyr, magrittr, ggplot y entre otros. Consiste en concatenar múltiples
operaciones hacia un objeto, estas operaciones van separados por “%>%” mientras
más este a la izquierda, más superior será:

obj %> % fl %> % f2 %> % f3 13 ( f2 ( fl ( obj ) ) )

Para usar este operado es necesario que instale el siguiente paquete:

'> [Link]("magrittr")
q
> library(magrittr)

Recuerda conectarse a internet para descargar el paquete, ya después


usa solo library.

Aquí algunos ejemplos de como se usa:

Ejemplo 1: Desde un objeto se intentará crear una matriz, después


restaremos 12 a todos los elementos y para finalizar extraemos el elemento
má[Link]: solo imprime el cálculo final.

61
62
CAPITULO 6. OTRAS OPERACIONES

> obj <- c(12,14,23,13,26,34,23,36,49,


22,14,23)

> obj %>% matrix(nrow=4,ncol=3) %>%


-12 %>% max
[1] 37

“x%>%f (y) ” es igual a “x%>%f (x, y) ”

O Cuando se trata de funciones como es el caso


de la matrix, el operador pipe realiza la operación
de esta manera obj %>%matrix (ncol, nrow) a esto
matrix(obj,ncol,nrow)

Ejemplo 2: Usaremos el otro comando %T>% para imprimir en consola


únicamente la operación que hace cierta función, y se guardará en el objeto
“a”( -> a)

> obj %>% sort %T>% sum — > a

> a
[1] 12 13 14 14 22 23 23 23 26 34 36 49
> # Sin el T
> obj %>% sort %T>% sum
[1] 289

Ejemplo 3: Si tenemos objetos tipo [Link], se usará “%$%” para


reducir comandos como “tb$a” o este “attach (ob j) ” que usa como fuente
de datos y después solo escribes el nombre de la columna (tedioso si tienes
muchos objetos).

62
1. OPERADOR PIPE

> objl < c (16, 18,26, 16, 30, 44, 34, 48, 56, 36,23, 37)
# Crear data trame
> tb <- [Link]("a"=obj,"b"=obj1)
# ================================
> tb %$% cor(a,b)
[1] 0.9490482

Ejemplo 4: Usar este símbolo “%<>%” para asignar o actualizar valores a


un objeto, en caso de tb su contenido sera modificado por el resultado de la
correlación redondeada a tres cifras.

> tb %<>% cor %>% round(digits = 3)


> tb
a b
a 1.000 0.949
b 0.949 1.000

Este símbolo %<>% es muy similar al ejemplo 2 por el caso de — > a que genera
el mismo resultado y usted puede comprobarlo usando el símbolo de asignación
< — que el mismo R nos ofrece.

Al igual que “magrittr” también hay otra alternativa “library (pipeR) ” que es
muy similar y solo el cambio es “%»%”

63
64 CAPITULO 6. OTRAS OPERACIONES

2.2 Caracteres
Cada lenguaje de programación tiene en si su propio procesado de caracteres y
R no es exclusión. Cuando se habla de caracteres en R nos referimos a objetos
que tiene como elementos grupos de textos similares a nombres, fechas, correos y
otros casos. El procesado toma en cuenta los espacios vacios

H o 1 a M u n d o
1 2 3 4 5 6 7 8 9 10

Lo comando internos que ofrece R para extraer, reemplazar y recortar caracteres


son los que se muestran en la siguiente tabla 6.1

Cuadro 6.1: Extracción y cambios simples de caracteres

1 Función ¿Que hace? ¡


(x es objeto) Permite cambiar el texto de minús-
casefold(x, upper)
cula(FALSE) a mayúscula(TRUE) o viceversa.

(x es objeto) Cambia un carácter existente (oíd) por


chartr(old,new,x)
uno nuevo(new).

(x es objeto) Extrae grupo de caracteres que están


substr (x, start, stop)
entre start(numérico) y stop (numérico).

(x es objeto) Recorta caracteres declaradas en


strsplit(x,split)
[Link] una lista

(text es objeto) Permite obtener el indice del ca¬


rácter que coincide con elpatrón(pattern) y la
regexpr (pattern, text)
cantidad de [Link]én agregue “igno¬
[Link]=T” para omitir mayúsculas y minúsculas

Se tomará estos objetos como referencias a los ejemplos:

> texto <- "texto eni minúscula"

> estado <- c("enojado", "feliz", "enojado", "molesto",


"enojado", "enojado", "feliz", "mo@esto",
"feliz", "molesto", "feliz", "fe@iz")

> correos <- c("mrr@[Link]","12asa@[Link]",


"5ftds@[Link]","H23@[Link]",
"qqw2@[Link]","we222@[Link]")

64
2. CARACTERES
65

> Ib <- pasteO("Es malo estar aqui y bien.


¿Usted es el malo?.
Muchos lo dicen aqui y estoy bien ...")

Observe los ejemplos:

Ejemplo 1: Cambiar todo el contenido de un objeto a mayúscula y luego


a minúscula.

> casefold(texto,upper = T) # igual a -> toupper(texto)


[1] "TEXTO EN MINÚSCULA"
> casefold(texto,upper = F) # igual a -> tolower(texto)
[1] "texto en minúscula"

Ejemplo 2: Verificar si un texto dado como patrón(pattern) se repite en


el objeto “correos”, si es el caso, hacer un cambio.

> grepl(pattern = "@gmx",[Link] = T,x = correos)


[1] FALSE FALSE FALSE FALSE TRUE TRUE

> gsub(pattern = "@gmx",replacement = "@hotmail",x = correos,


[Link] = T)
[1] "mrr@[Link]" "12asa@[Link]" "5ftds@[Link]"
^ "H23@[Link]"
[5] "qqw2@[Link]" "we222@[Link]"

> chartr(old = "t",new = "T",x = texto) # cambia un carácter


[1] "TexTo en minúscula"

Ejemplo 3: Extraer solo una parte del texto dada por el indice y hacer
cambios de un solo carácter. También usar grep para verificar coincidencias
en elementos y luego imprimir dichos valores.

65
66 CAPITULO 6. OTRAS OPERACIONES

> substr(x = texto,start = 10,stop = 18)


[1] "minúscula"
> chartr(old = "m",new = "M",x = texto)
[1] "texto en Minúscula"
#-
> grep(pattern = "@gmail",x = correos)
[1] 1 4
> correos[grep(pattern = "@gmail",x = correos)]
[1] "mrr@[Link]" "H23@[Link]"

Ejemplo 4: Verificar si hay algún elemento existente dada por pa-


tron(pattern) y retornar una lista con elementos entrecortados.

66
67
2. CARACTERES

Ejemplo 5: Verificar mediante un patrón si existe “minús” en el objeto


texto y retornar el índice junto con el tamaño.

> regexpr(pattern = "minús", [Link] = T,text = texto)


[1] 10
attr(,"[Link]" )
[1] 5

67
68 CAPITULO 6. OTRAS OPERACIONES

En la comunidad de R hay algunas librerías con un gran potencial para el


análisis de texto (NLP) “Procesamiento de Lenguaje Natural”. Para continuar por
favor instale las siguientes librerías

e
> [Link]("stringr")
> [Link]("stringi")
> [Link]("tokenizers")
> [Link]("tidyverse",dependencies = T)
> [Link]("cleanNLP")

> library(tidyverse)
> library(stringr)
> library(stringi)
> library(tokenizers)
> library(cleanNLP)

Para mas información de stringr visite ([Link]


o la web github ([Link]
Si tienes dificultades en tidyverse, instala
[Link]("rlang", type = "source")
v

Ejemplo 6: Usar librería stringr

# Contar cantidad de caracteres


> str_count(string = correos)
[1] 13 17 17 13 12 13

# Contar solo los elementos que tienen a hotmail


> str_count(string = correos,pattern = "hotmail")
[1] 0 110 0 0

# Mostrar solo los elementos que terminan en hot


> str_subset(string = correos,pattern = "hot")
[1] "12asa@[Link]" "5ftds@[Link]"

# Si quieres verlo en html tipo web


> [Link]("htmlwidgets" )

68
69
2. CARACTERES

> str_view(string = correos,pattern = "hotmail")

Ejemplo 7: Usar librería stringi

# Verificar si si existe una letra


> correos %stri<% "b"
[1 ] FALSE TRUE TRUE FALSE FALSE FALSE

# Mostrar estadísticas generales


> stri_stats_general(str = texto)
Lines LinesNEmpty Chars CharsNWhite
1 1 18 16

# Mostrar estadísticas especificas


> stri_stats_latex(str = texto)
CharsWord CharsCmdEnvir CharsWhite Words
16 0 2 3
Cmds Envirs
0 0

Ejemplo 8: Usar librería tokenizers para ver palabras

# Verificar si si existe una letra


> tokenize_words(x = Ib)
[1] ]
[1] "bien" "querido" "fagin" "se"
[5] "puede" "saber" " que" "haces"
[9] "ha" "esta" "hora" "de"
13] "la" "noche" "visitando" "este"
17] "vecindario" "y" "encima" "has"
21] "logrado" "traer" "el" "gran"
25] "botin" " que" "supuestamente" "era"
29] "para" "las" "cuatrocientas" "horas"
33] "si" "deseas" "un" "cambio

69
70
CAPITULO 6. OTRAS OPERACIONES

[37] "espera" "esta" "noche"

Ejemplo 9: Verificar cuantas veces se repite las palabras. Se usará tibble


en vez de [Link]

# ==== library ( "tidyverse" ) =====


> a <- tokenize _words(x = Ib)
> b <- table(a[ [1] ] )
> tibble(letras = ñames(b),repetido = [Link](b))
# A tibble: 12 x 2
letras repetido
<chr> <dbl>
1 aqui 2
2 bien 2
3 dicen 1
4 el 1
5 es 2
6 estar 1
7 estoy 1
00
i—1

1
o

9 malo 2
10 muchos 1
11 usted 1
12 y 2

Ejemplo 10: Contar palabras, caracteres y sentencias

70
71
2. CARACTERES

Ejemplo 11: Usar cleanNLP para un análisis en profundidad,


Atención: Se necesita instalar Python y después usar en consola
pip install cleannlp

> cnlp_init_stringi(locale="es_ES")
> cnlp_init_udpipe(model_name="spanish")
> cnlp_init_spacy(model_name="es")
Error: Python module 'cleannlp' not found. Install with:
pip install cleannlp
> cnlp_init_corenlp(lang="es")
Error: Python module 'cleannlp' not found. Install with:
pip install cleannlp
> #- ejemplo
> cnlp_annotate(input = Ib)

$token
# A tibble: 22 x 11
sid tid token token_with_ws lemma upos xpos feats tid_source relation
<int> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
1 1 Es "Es " ser AUX NA Mood. . . 2 cop
1 2 malo "malo " malo ADJ NA Gend. . . 0 root
1 3 estar "estar " estar AUX NA Verb. . . 2 csub j
1 4 aqui "aqui " aqui ADV NA NA 3 advmod
1 5 "y n CCONJ NA NA 6 cc
Y y
1 6 bien "bien" bien ADV NA NA 4 con j
1 7 . " . \n" PUNCT NA NA 2 punct
1! . II
2 1 ¿ 6 ¿ PUNCT NA NA 5 punct
2 2 Usted "Usted " tú PRON NA Case. . . 5 nsub j
2 3 es "es " ser AUX NA Mood. . . 5 cop
# ... with 12 more rows

$document
doc_id
1 1

71
72
CAPITULO 6. OTRAS OPERACIONES

3.3 Gráficos
Hay muchas librerías en la comunidad del lenguaje R ofreciendo generar
gráficos de distintos tipos de diseño. Es importante tener todas las librerías y el
programa R actualizados. Para esta sección se necesitará estas librerías

> [Link]( ggrepel") # ggplot2 comp.


> [Link]( wordcloud2")
> [Link]( webshot")
> [Link] ( ggplot2")
> [Link]("plotly")
> webshot::install phantomjs()

1.3.1 Wordcloud

Genera una nube de palabras de forma aleatoria, también puedes agregar una
imagen como contorno.

Wordcloud:
e-
> library(webshot) fsirve para generar html
> library(wordcloud2)
> library(tokenizers)
4

Ib = pasteO("hombre de los garabatos arremetió contra los


gatos,hombre de los gatos arremetió garabatos,
los garabatos del hombre arremetió contra los gatos,
los gatos son garabatos")
#
a <- tokenize_words(x = Ib)
b <- table(a[[1]])
tb <- tibble(letras = ñames(b),repetido = [Link](b))
#ar <-
wordcloud2(data = tb,size =1.8 )

72
73
3. GRAFICOS

hombre
Cuadro 6.2: Formas en wordcloud

1 Forma Produce ¡
circle Un circulo
cardioid Un gráfico cardioide
diamond Un diamante
triangle-forward Un triangulo hacia adentro
triangle Un triángulo
pentagon Un pentágono
star Una estrella

Nota: Para obtener la forma correcta es ne¬


cesario tener hojas de puro palabras ya que
depende de la cantidad de palabras.

#
> wordcloud2(data = tb,shape="circled")
#

“Exportar a html y pdf ’

O Es muy importante generar un pdf o cualquier otro formato


de imagen y se debe a que cuando usted esta creando un
reporte en Sweave pdf, trabaje correctamente dado a que
wordcloud solo genera un formato web. Es aquí donde usa
la librería webshot para tomar captura.

73
74
CAPITULO 6. OTRAS OPERACIONES

# librerías
> library(webshot)
> library(htmlwidgets)

#-
> img <- wordcloud2(data = tb,shape="circled")

#
> saveWidget(img, "[Link]",selfcontained = F)
> webshot("[Link]",file="[Link]", cliprect="viewport")
#

Información y ayuda:
Puede usted encontrar más información en la siguiente web:
https: //[Link]/ 196-the-wordcloud2-library
Si usted tiene instalado inkscape y desea una mejor calidad al exportar, use
esta web:
https: / / www. j asondavies. com/wordcloud/

2.3.2 Plotly
Una librería muy interesante que esta disponible en lenguajes de programación
como: Python, JavaScript, Matlab, Perl, Julia, Arduino y R. Como nos encontramos
en R entonces se necesita incluir esta librería plotly para las gráficas y dplyr es
alternativa para crear el cuadro de datos (tibble) que ante se usaba data. trame

e
> library(plotly)
> library(dplyr) # para tibble
4

La librería genera un fichero web (html) que solo se puede abrir con el navegador
web(si es que no cuenta con Rstudio).

Observe los siguientes ejemplos:

74
75
3. GRAFICOS

Gráfico de donas

> tab <- tibble(nombre= c("MBS","KRS", "LM","SRA",


"EIB","BIA", "SDA","KWJ"),
valor = c(77, 56, 26, 50, 80, 50, 69, 69))
> tab
# A tibble: 8x2
nombre valor
<chr> <dbl>
1 MBS 77
2 KRS 56
3 LM 26
4 SRA 50
5 EIB 80
6 BIA 50
7 SDA 69
8 KWJ 69
#=

O
Hl

>
A

tab %>% plot_ly(labels=~nombre ,valúes = -valor) %>%


iL

add_pie(hole = 0.6)
#-
> fg %>% layout(tifie =
O "Gráfica Dona" ,showlegend = T)
> fg # ver gráfico

Gráfica Dona
■ EIB
■ MBS
■ SDA
■ KWJ
■ KRS
■ SRA
■ BIA
■ LM

75
76
CAPITULO 6. OTRAS OPERACIONES

Se toma los elementos de tab para luego ser procesados en plot_ly, recuerda
que todo esto es almacenado en un nuevo objeto llamado fg.

En el argumento labels hace referencia a las etiquetas que en la data(tb)


se encuentra en la columna llamada “nombre” pero he aquí un detalle, presta
atención al símbolo empleado (~nombre = tab$nombre) ambos generan el mismo
resultado. Al igual que labels, valúes es en efecto el mismo caso solo que en vez
de etiqueta seria los datos numéricos.
Luego se encuentra la función add_pie(hole = 0.6) que significa el grosor de la
dona, mientras mas se aproxime a la unidad (1.0) mas fino será el relleno.

En configuramos el diseño como es el caso del titulo,nombres al eje xey,


la leyenda y entre otros.

Gráfico Pie(torta)

> fg <- tab %>% plot_ly(labels=~nombre,valúes = -valor,


type= "pie",textinfo= 'label+percent',
insidetextorientation='radial' ,
domain= list(row=0,column=l)) %>%
layout(title="Grafico Pie",showlegend=T)

76
77
3. GRAFICOS

Gráfico de Dispersión

77
78
CAPITULO 6. OTRAS OPERACIONES

Cuadro 6.3: Colores compatibles con plotly

hex color = "#FF0 0 0 0"


rgb color = "rgb(98,197,59)"
color rgba color = "rgba(98, 197,59, 0.5)"
hsl color = "hsl (335, 52%, 37%)"
hsv color = "hsv(117,89%,100%)"

I Importante: subplot() parece ser que no funciona con


gráficos tipo pie pero si con el resto.

#
> a <- sample(1:240,size = 90,replace = F)
> tabla <- tibble(z = matrix(data = a,ncol = 10) )
> plot_ly(data = tabla,z=~z, type = 'heatmap')
# mapa de calor
#

#-
> plot_ly(data = tb, x=~x,y=~y, type = "bar", mode ="markers"
- )
# barras
#-

78
79
3. GRAFICOS

> plot_ly(data = tb, x=~x,y=~y,type = "scatter",


mode="lines",fill="tozeroy")
# dispersión con relleno
#-

#-
> plot_ly(data = tb,x=~x, type "histogram")
# histograma
#-

79
80 CAPITULO 6. OTRAS OPERACIONES

#-
> plot_ly(data = tb,x=~x, type "box")
# gráfico boxplot
#-

trace 0

40 45 50 55
X

#-
> plot_ly(data = tb, x=~x, y=~y, type "histogram2d")
# gráfico histograma en 2d
#-

80
81
3. GRAFICOS

“Mas información”
En su pagina web [Link] encontra-
M rá todos los gráficos disponibles y si no es suficien-
te entonces descarge el cheat sheet que esta dispo¬
nible en [Link]
images/r_cheat_sheet.pdf

3.3.3 GGplot
Es una de las librerías muy usadas y esto es porque permite personalizar cada
detalle en la gráfica, lo de bueno es que trabaja modo sin conexión permitiendo
exportar la gráfica en diferentes formatos como: “eps, ps, tex (pictex), pdf, jpeg,
tiff, png, bmp, svg y wmf’.

e
> library(ggplot2)
> library(ggrepel) #geom_label_repel()
4

I Importante: El signo + sirve para unir funciones, esto


es muy similar al operador pipe.

81
82
CAPITULO 6. OTRAS OPERACIONES

Cuadro 6.4: Gráñcos para una Variable

1 Código Produce
p + geom_density() gráfico de densidad
p + geom_dotplot() gráfico de puntos
p + geom_histogram(binwidth = n ) histograma
p + geom_barO gráfico de barras
p + geom_density() gráfico de densidad

Nota: n es un numero cualquiera

data tb

> tb <- tibble(duración = sort(sample(10:30,


size=36,replace=T)),
respuesta = sort(sample(10:30,
size=36,replace=T)) )
#-
> p <- ggplot(data = tb,aes(x = respuesta))

Ejemplos usando una sola variable

> p+geom_dotplot(binwidth=2, > p + geom_freqpoly()


method="histodot",
stackdir="center",
fill="white",stroke=2)

10 20 25 30
respuesta

10 15 20 25 30
respuesta

82
83
3. GRAFICOS

> p + geom_bar()

El siguiente gráfico estadístico es el cuantil junto con la pendiente (stat_qq_line)

> p <- ggplot(data = tb,aes(sample = respuesta))


> p + stat_qq() + stat_qq_line()

83
84
CAPITULO 6. OTRAS OPERACIONES

-2 -1 Ó í 2
theoretical

Gráfico Pie
También esta la gráfica de torta pero hay todo un proceso para lograr el diseño,
al igual que el anterior se intentará crear un objeto temporal que nos servirá para
generar valores aleatorios y después incluirlo en QJ

Agregar nueva columna a data tb

> med <- sample(c("airl","pcl","pc2","pc3","pc4","sync"),


size=36, replace=T)
> tb$m <- med
> tb
# A tibble: 36 x 3
duración respuesta m
<int> <int> <chr>
1 10 11 pc4
2 10 11 pc2
3 10 12 sync
4 11 13 pc3
# . .. with 32 more rows

Por tratarse de gráficos de una sola variable, usaremos solo la columna “tb$m”.
Se necesitará de la función geom bar() con el coord_polar() y un tema que
permite eliminar ciertas partes theme_void()

84
85
3. GRAFICOS

> t <- ggplot(data = tab,aes(x = 1,fill= m))


> t + geom_bar (width = 1) + coord_j?olar (theta="y", start=0) +
theme_void() + labs(
title = "Gráfica torta",
subtitle = "Sub titulo",caption = "Fuente NI",
fill ="Meca") +
theme([Link] = element_text(
face = "italic",
family = "Times",
colour = "blue",
size = 14

)
)# , o

Recuerda que el mismo procedimiento de legend. title se aplica a continuación


del para los siguiente:

J [Link]() — > titulo


[Link]() — > subtitulo
[Link]() — > encabezado

La ubicación de la leyenda es definida por:


[Link] = - > "top", "right", "left". "bottom" Solo elegir

85
86 CAPITULO 6. OTRAS OPERACIONES

UNO.

La siguiente función permite encerrar el gráfico en un cuadro


[Link] = element_rect(colour = "orange",size = 2)

Previa de como se debe usar

> t + geom_bar() + coord_polar() + theme_void() + labs() +


theme(
[Link] = element_text(),
[Link] = element_text(),
[Link] = element_text() ,
[Link] = element_text(),
[Link] = "top",
[Link] = element_rect()

Usted debe intentar dar forma a sus gráficos probando distintas funciones
ya mostradas anteriormente. Ahora pasemos a los gráficos que necesitan de 2
variables, vea la siguiente tabla 6.5

Cuadro 6.5: Gráñcos para dos Variables

1 Código Produce jj
p + geom_area() Gráfico de área con relleno
p + geom_bar() Gráfico de barras
p + geom_boxplot() Gráfico de cajas
Gráfico de lineas en ejes, úsalo como complemen¬
p + geom_rug()
to
Similar a geom_point( ), con la diferencia que
p + geomjitter()
agrega puntos aleatorios para datos dispersos

Distribución Bivariado
p + geom_bin2d() Mapa de calor con cuadros 2d
p + geom_density2d() Gráfico de densidad en dos dimensiones
Mapa de calor con cuadros hexagonales similar a
p + geom_hex()
geom_bin2d()
p + geom_area() Gráfico de relleno con lineas tipo cintas
p + geom_line() Gráfico de lineas

Nota: en caso de ser gráfico de puntos, puedes usar “alpha = 0.6"(va


de 0.0 a 1.0)

Pasemos a algunos ejemplos:

86
87
3. GRAFICOS

2 variables numéricos y 1 no numérico

> p <- ggplot(data=tb,aes(x=duracion,y=respuesta,color = m

Agregando en aes(color=objeto$columna), crear colores aleatorios de acuerdo a


la columna, es de vital importancia que la columna seleccionada tenga elementos
repetitivos.
Ejemplos usando dos variable

> p + geom_point(size=4, > p + geom_bar(


alpha=0.6) stat="identity",
aes(fill=m))
el argumento size sirve para reducir
o aumentar el tamaño de los puntos (no
usar valores negativos)

m
O airl

• P=1
• Pc2
pc3

pc4

sync

or 10 15 20 25 30
10 15 20
duración
25 30

duración

> p + geom_rug(alpha=0.5, > p + geom_boxplot()


sides="trbl",
position="jitter")
el aes(fill=m) sive para ajustar y relle¬
nar de color las barras de acuerdo a la co¬
alpha es la transparencia del colorí va¬ lumna m.
lores 0.0 hasta 1.00 ).
_IIIi ¡I 1 II I III III I II I I II I

25 — m m
airl Ej3 airl
peí $ peí
20
pc2 pc2
pc3 Fyl pc3
pc4 pc4
15
sync sync

10 l,i I il , II I i i,ll I I I | I
10 15 20 25 30 16 20 24
duración duración

87
88 CAPITULO 6. OTRAS OPERACIONES

Hay una función llamada [Link](...,ncol=n) que permite unir múltiples


gráficas en una sola, por ejemplo:

> q4 <- p + geom_bin2d()


> ql <- p + geom_density2d()
> q3 <- p + geom_area()
> q2 <- p + geom_line()
> gridExtra::[Link](ql,q2 , q3, q4)#usar ncol= 2

88
89
3. GRAFICOS

Aquí usaremos la librería library (ggrepel) que ofrece dos funciones:


geom_text_repel () muestra solo texto y geom_label_repel () muestra el texto
dentro de un rectángulo.

#library(ggrepel) #
> 11 <- p + geom_text_repel(aes(label=m), size= 3)
> 12 <- p + geom_label_repel(aes(label=m), size= 3)
> gridExtra::[Link](11,12)

airl pecL pc4


' airl Ss*
airl a airl
sync
a peí

a pc2

pc3

pc4

a sync
30
duración
m
a airl

a peí

a pc2

a pc3

a pc4

a sync

duración

Annotate
Los textos matemáticos también se pueden escribir en ggplot pero tiene su pro¬
pia sintaxis de escritura, si desea más información visite “[Link]
[Link] / su07/R/html / grDevices/html/plotmath .html”

#- formula para calcular R2


> r = round(summary(lm(data = tb,
formula = duración-respuesta))$[Link],3)
#-
> p + geom_point() + annotate("text",x=12,y=27,parse=T,
label=paste("~RA2 ==",r ) , size=6) + theme_bw()

89
90
CAPITULO 6. OTRAS OPERACIONES

Se ha usado annotate(parse=T) es importante que parse=T solo de esa


forma imprime texto matemático, la facilidad de esta función es que permite
ubicar el texto en los puntos “x" e “y”. También hay otras opciones usando
angle=90, colour="red" , family="Courier", fontface="bold"

m
• airl

• peí

• pc2

• pc3

pc4

• sync

Annotate permite usar la opción “rect” que permite crear un rectángulo a partir
de las dimensiones dadas

> p + geom_point() +
annotate("rect" ,
xmin=20, xmax=25,
ymin=8,ymax=30,
alpha=0.2 ,fill="red") +
theme_bw()

30

10 15 20 25 30
duración

90
91
3. GRAFICOS

la otra opción que crea una flecha en el gráfico, es “segment” y muy importante
cuando se trata de gráficos estadísticos

> p + geom_point() +
annotate("segment",
x=16, xend=19,
y=30,yend=26,
alpha=0.3 ,fi11="red",arrow=arrow(),size=2)

gráfico torta
Continuando con gráficos tipo torta, en este apartado se intentará mejorar el
diseño usando dos variables (columnas) por motivos de estética.
data para gráfico pie usando 2 variables

> tab <- tibble(valor=sample(20:40,size = 5,replace = T),


text= c("Al","A2","B2","C4" , "D2") )
# - prop = "proporción"
> tab <- tab %>% arrange(dése(text)) %>%
mutate(prop = valor/ sum(tab$valor)*100)
# - posición de "y" para label
> tab <- tab %>% mutate(ypos = cumsum(prop)- 0.5*prop)
> tab
# A tibble: 5x4
valor text prop ypos
<int> <chr> <dbl> <dbl>
1 33 D2 21.2 9.52
2 35 C4 22.4 31.2

91
92
CAPITULO 6. OTRAS OPERACIONES

3 30 B2 19.2 52.2
4 24 A2 15.4 69.7
5 34 Al 21.8 88.0

> torta <- ggplot(data = tab,aes(x = 2, y=prop, fill= text))

> torta + geom_bar(stat="identity",width=l, [Link]=F) +


coord_polar(theta = "y", start = 0) + theme_void() +
geom_label_repel(aes(y = ypos,label=text),color="white",
size= 5,[Link] = F
) + scale_fill_grey() + xlim(0.5, 2.5)

Usando otra forma y con colores definidos manualmente por


scale_fill_manual(valúes = objeto)

> col <- c("#31f48e","#07aa7b","#0bbeff","#0086ff","#01437d")

> ggplot(tab, aes (x="", y = valor, fill = factor(text))) +


geom_bar(width = 1, stat = "identity") +
geom_text(aes(
label = paste(round(valor/sum(valor) * 100,1),"%")),

92
3. GRAFICOS

position = position_stack(vjust = 0.5),


color="white",fontface="bold") +
theme_classic() +
theme([Link] = element_text(hjust=0.5) ,
[Link] = element_blank(),
[Link] = element_blank(),
[Link] = element_blank()) +
labs(fill = "Categoría",
x = NULL,
y = NULL,
title = "Gráfico Circular") +
coord_polar("y")+ scale_fill_manual(valúes = col)

Gráfico Circular

Categoría

gráfico de barras para escala likert


Además de crear estos gráficos sencillos, intentaremos ir un poco mas lejos
y para ello se intentará crear un gráfico tipo likert con tres dimensiones, nos
apoyaremos por el gráfico de barras:

Importante
9 Es necesario descargar estos dos ficheros:
stat_fill_labels.R

93
94
CAPITULO 6. OTRAS OPERACIONES

inv_cumsum.R
desde su pagina github del autor [Link]
larmarange/JLutils/tree/master/R o también en esta parte
https: / / github. com/Moriand/Rlabels

Una vez descargado use esto en su consola de R

e 4^1
> source(file = [Link]()) #stat_fill_labels.R
l> source(file = [Link]()) #inv_cumsum.R
i 4

Primero de lo primero, se necesita la data y lo obtendremos con una función


que genera valores aleatorios:

función para generar valores aleatorios

> función <- function(caso,Ib,n){


tmp <- sample(x = Ib,size = n,replace = TRUE) %>%
table() %>% data, frame()
tmp$p <- tmp$Freq %>% [Link]() %>%
round(digits = 4)*100
tmp$w <- rep(caso,length(tmp$Freq))
ñames(tmp) <- c("label","Freq","prop","w")
return(tmp)
}

Intentaremos crear un objeto que contenga las etiquetas likert (lab) y un objeto
llamado casos que se encargara de almacenar la data

data casos

> lab < - c("Totalmente Satisfecho"," Muy Satisfecho",


"Neutro","Poco Satisfecho"," Nada Satisfecho")
> casos <- función(caso = "Casol",lb = lab,n = 40)
> casos <- rbind(casos,función(caso = "Caso2",
ib = lab,n = 40))
> casos <- rbind(casos,función(caso = "Caso3",
ib = lab,n = 40))

94
95
3. GRAFICOS

rep()

label Frea prop


r w
Muy Satisfecho 6 15.0 Casoi
Nada Satisfecho 13 32.5 Casoi
Neutro 7 17-5 Casoi
Poco Satisfecho 8 20.0 Casoi
Totalmente Satisfecho 6 15.0 Casoi
f Muy Satisfecho 8 20.0 Caso2
1[ Nada Satisfecho
1 Neutro
9
9
22.5
22.5
Caso2
Caso2
tT
.5 c
J1 Poco Satisfecho
Totalmente Satisfecho
6
8
15-0
20.0
Caso2
Caso2
•a i i Muy Satisfecho 4 10.0 Caso3
1 Nada Satisfecho ll 27-5 Caso3
Neutro 8 20.0 Caso3
l Poco Satisfecho 4 10.0 Caso3
V Totalmente Satisfecho 13 32.5 Caso3

Usamos la data casos que es un [Link], en la librería ggplot de la siguiente


manera

95
96
CAPITULO 6. OTRAS OPERACIONES

gráfico

# stat_fill_labels.R
# inv_cumsum.R
> s <- ggplot(data=casos,aes(x=w,fill=label,weight=prop))
> s + geom_bar(position = "fill") + scale_fill_brewer() +
theme_bw() +
labs (
fill="Indicador",face="bold",size=14,
y="Porcentaje",x="Según Dimensión") +
stat_fill_labels()

Indicador

Muy Satisfecho

Nada Satisfecho

Neutro

Poco Satisfecho

Totalmente Satisfecho

Puede agregar rectángulos a cada etiqueta que contiene el porcentaje cambian¬


do
stat_fill_labels () por este otro
geom_label (stat = "fill__labels")

96
97
3. GRAFICOS

temas
La librería ofrece varios tipos de temas que cada uno de ellos tiene distintos
estilos.

Cuadro 6.6: Lista de temas para ggplot

1 temas temas |
theme_bw[) theme_grey[)
theme_classic() theme_light()
theme_dark[) theme_linedraw()
theme_void[) theme_minimcd[)
theme_gray() theme_test{)

argumentos
base_size = 14 tamaño del texto
base_family = "times" fuente tipográfica para el texto
base_line_size = 9 grosor de linea para los ejes x e y
grosor de la caja, Nota: funciona con “bw,
base_rect_size = 4
CLASSIC, LIGHT,LINEDRAW Y TEST”

temas

#library(ggplot2)
#library(tibble)
# ver data tb
> q <- ggplot(data = tb,aes(x=duracion,y=respuesta,color=m))
> p <- q + geom_point(size=6,alpha=0.4)

> pO <- p + theme_bw() +


annotate("text",x = 14,y = 25,label="theme_bw", size= 6)
> pl <- p + theme_classic() +
annotate("text",x=14,y=25,label="theme_classic", size= 6)
> p2 <- p + theme_dark() +
annotate("text",x = 14,y = 25,label="theme_dark" , size=6)
> p3 <- p + theme_void() +
annotate("text",x = 14,y=25,label="theme_void", size= 6)
> p4 <- p + theme_gray() +
annotate("text",x = 14,y=25,label="theme_gray", size= 6)
> p5 <- p + theme_grey() +
annotate("text",x = 14,y=25,label="theme_grey", size= 6)
> p6 <- p + theme_light() +
annotate("text",x =14,y=25,label="theme_light", size= 6)

97
98
CAPITULO 6. OTRAS OPERACIONES

> p7 <- p + theme_linedraw() +


annotate("text",x=16,y=25,label="theme_linedraw",size=6)
> p8 <- p + theme_minimal() +
annotate("text",x=16,y=25,label="theme_minimal",size= 6)
> p9 <- p + theme_test(base_size = 14,
base_family = "Times",
base_line_size = 9,
base_rect_size = 4) +
annotate("text",x = 14,y=25,label="theme_test", size=6)

> gridExtra::[Link](pO,p2,p3,p4,p5,p6,p7,p8,p9)

• •
m
theme void
„o • • peí

pc2
¿•o P°3

• • Pc4
sync

airl

# peí
pc2
theme_grey y airl
peí
pc2
airl
peí
pc2
Pc3 t* pc3 Pc3
P°4 ••• pc4

peí
pc2
25 theme minimal y airl

# peí
pc2
airl

pcl
Pc2
PC3 pc3 pc3
pc4 pc4 pc4
sync sync sync

Otra función importante es la siguiente


p + theme_bw() + facet_grid(rows=vars(m))
las fuentes tipográficas que acepta ggplot son : “Short, Canonical, mono, Courier,
sans, Helvética, serif, Times, AvantGarde ,Bookman ,Helvetica-Narrow, NewCen-
turySchoolbook, Palatino, URWGothic, URWBookman, NimbusMon, URWHel-
vetica, NimbusSan, NimbusSanCond, CenturySch, URWPalladio, URWTimes,
NimbusRom”

también la forma “face =” "plain" , "bold" , "italic", "bold. italic"

98
99
3. GRAFICOS

Si en los ejes “x” e “y” muestran textos sobrepuestos, debe agregar esta función:

p + scale_x_discrete(guide = guide_axis([Link] = 2))


O esta otra función que elimina las etiquetas que únicamente están sobre monta¬
das:

p + scale_x_discrete(guide = guide_axis([Link] = TRUE))

Si quieres centrar el titulo del gráfico “caption” agrega lo siguiente:


p + theme([Link] = element_text(hjust = 0.5))

Mas información
En el libro R Graphics Cookbook[2], “capitulo 8” y sección “Fonts” usted
puede encontrar más ejemplos sobre las fuentes tipográficas, temas y estilos.

99
Importando y Exportando ficheros

En toda esta sección se encontrará con la función fí[Link]() y bueno sirve


para encontrar el fichero o la dirección relativa a ella por ejemplo:

QC:/Users/Den/Desktop/[Link] (Den: Usuario del equipo)

O sea que con esta función no se necesita escribir el directorio sino mas bien
aparecerá una interfaz que permite recorrer de forma gráfica donde esta el fichero
que se desea abrir y retornará una dirección, ¿muy interesante no te parece?.
Ahora intenta esto:

> print([Link]())
[1] "C:\\Users\\Den\\Desktop\\[Link]"

101
102
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

Figura 7.1: Abrir ñchero

> print([Link]()

Si usamos nuevamente [Link]() como exportación de fichero entonces en


File ñame se le da un nombre y el formato que se desea exportar por ejemplo
“exportar, csv” y después presiona el botón Open, lo que generará otra ventana
advirtiendo que dicho fichero no existe pero nos ofrece la opción de crear uno y es
ahí donde presionas en el botón Yes para crearlo. Recuerda que esto no crea el
fichero sino mas bien genera un enlace con el nombre del fichero a crear.

> [Link] ()
[1] "C:\\Users\\Denn\\Desktop\\[Link]"

Revise los ejemplos 2.1 y 2.2(pagina 60) que es otra alternativa personaliza-
ble para abrir y guardar ficheros.

Abrir(nombre ="txt texto" ,filtro = ".txt")

Guardar(nombre ="txt texto" ,filtro = ".txt")

102
103
1. csv

Figura 7.2: Crear ñchero

> print (file. choose ())


[1] "C:\\Users\\Denn\\De$ktop\\[Link]"
> file. choose ()

Sclec onar archivo

f C Destetop v C Oeiktcp p

1.1 CSV
El fichero sencillo de manejar en R y se presentará algunas funciones que se
encargan de importar y exportar fichero csv. A continuación se mostrará una tabla
que se tomará como ejemplo para procesar en R, al lado izquierdo se encuentra la
vista de la tabla y al lado derecho esta los datos en un fichero llamado [Link],
intente crear un fichero desde el bloc de notas y guárdelo como [Link] o también
puede hacerlo directamente de software MS Excel.

tabla

title 1 title2
fl 13 10
Í2 11 8
f3 18 13
f4 21,4 19,4
f5 16 12
f6 “12”
@

103
104
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

1.1.1 Importar
Se presentarán algunas funciones que permiten la importación de este fichero.

interna

read. csv(file, header, sep, quote, dec, fill, comment. char, row. ñames)

En file también puede agregar url, acepta enlaces que inicien con
http: / /, https : / /, [Link] o ftps : / / y terminen en .gz, ,bz2, .xz, o .zip
(caso de ser comprimido) y .csv por ejemplo:
file="http:// ..../[Link]"

file (enlace) Se coloca el directorio o el enlace donde


esta el fichero.
header (booleano) Indica si el fichero tiene o no en la
primera fila los nombres de las columnas,
sep (char) Que tipo de separador usa el fichero, den¬
tro de los más conocidos o o “t” o “I” y
otros.
quote (char) Si hay comentarios que por lo general
van entre comillas y para eliminarlo se usa
quote="\"" .

dec (char) Dice que tipo de símbolo usa para decima¬


les por ejemplo o Y’.Solo funciona si toda la
columna es numeric
fill (booleano) Si f ill=T entonces las celdas vaciás
se llenarán con valor NA, caso contrario (F) lo
deja en blanco.
[Link] (char) Si por casualidad no funciona fill, entonces
intenta fill=T,[Link]="" •
[Link] (char) S . [Link]="L" , buscará todos los
elementos que contengan ese valor y lo eliminará.
Solo aceptará un carácter.
[Link] (numérico) Si escribe [Link]=l , estará di¬
ciendo que la primera columna contiene los nom¬
bres para todas las filas.

104
105
1. csv

Ejemplo 1

> tabla <- [Link](file=[Link]() ,


header=TRUE,sep=", ",
[Link]=l)
> tabla
titleí title2
fl 13 10
f2 11 8
f3 18 13
f4 21, 4 19, 4
f5 16 12
f6 12
@
> View(tabla) # vist

Se observa que en los decimales ha usado la coma y en la ultima fila todavía


se encuentra el char(@).

Ejemplo 2

> tabla <- [Link](file=[Link]() ,


header=T, sep=",",
[Link]=l, quote =
dec=",", fill = T,
[Link]="",
[Link] = "@")
> tabla
titlel title2
fl 13.0 10.0
f2 11.0 8.0
f3 18.0 13.0
f4 21.4 19.4
f5 16.0 12.0
f6 12.0 NA
> View(tabla) # vista del IDE

Se ha logrado corregir los casos de la coma por punto gra-


cias a quote = "\"", dec="," eliminar la ultima fila con

[Link] = "@" y añadir el relleno del <NA> con

105
106 CAPÍTULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

fill = T, [Link]='

106
107
1. csv

readr

read_csv( file, col_names, comment, quote, n_max,skip, na )


En esta librería se tiene control sobre la cantidad de datos que usted desea
extraer y también el control sobre que carácter sobreescribir cuando tiene una
celda sin valores pero resulta dificultoso cuando se tiene decimales dentro de
comillas.

file (enlace) Se coloca el directorio o el enlace donde


esta el fichero.
col_names [booleano) Indica si el fichero tiene una columna
de nombres.
comment (char) Sirve para omitir elementos que contienen
dicho valor escrito.
quote (char) Si hay comentarios que por lo general
van entre cc>millas y para eliminarlo se usa
quote="\""
n_max (numeric) Limita la cantidad de valores. No acep¬
ta cadena “c(l:3)”
na (char) Permite cambiar valores de elementos nu¬
los o vacíos
skip [numeric) Si coloca skip=3 entonces eliminará
filas desde el 1 hasta 3. Acepta solo un valor, no
cadena

Librería importante para poder usar esta función:

f
> library(readr)
> # si hay error usar
> [Link]("readr")
> library(readr)

Recuerda conectarse a internet para descargar ins-


^[Link](“readr”) ya después usa solo library(readr).

En el ejemplo siguiente se observa que tiene un error y éste es generado por los
números que están en comillas, preste atención al delimitador(,) y al quote (\")

107
108 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

108
109
1. csv

csvread

csvread(file, coltypes, header, nrows, verbose, delimiter, [Link]) )

Y por ultimo hay una librería externa que ofrece leer de 10M a más líneas con
una super velocidad usando poca memoria de R. Bueno esta librería se diferencia
de las otras por su gran velocidad en procesar los datos pero eso no lo hace el
único que usted pueda usarlo ya que por alguna razón no están incluidas estas
funciones quote y dec.
También es importante agregar que cuenta con la función de nrows, permi¬
tiendo solo cargar una determinada cantidad de filas.
Si desea mas información, visite [Link]
csvread/[Link]

file (enlace) Se coloca el directorio o el enlace donde esta el


fichero.
coltypes (string) Necesita saber que typo
de datos hay en columnas, ejm:
"integer", "double", "string", "long", "longhex"
header (boolean) ¿La primera fila contiene los nombres para las
columnas? (TRUE o FALSE)
nrows (numeric) Indique la cantidad de lineas a leer (solo un
valor), por ejm 30.
verbose (boolean) Imprime la cantidad de lineas.
delimiter (char) Indique el tipo de separador usado en el [Link]:
, o ; o t o 1
[Link] (char) Permite cambiar valores de elementos nulos o vacíos,
ejem :"NA", "na", "NULL", "nuil", ""

Librería importante para poder usar esta función:

e
> [Link]("csvread")
> library(csvread)

Recuerda conectarse a internet para descargar ins-


[Link](“csvread”) ya después usa solo library (csvread).
4

109
no CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

Al igual que la librería anterior ésta también se tiene dificultades al leer el


fichero pero se tratará de corregirlo con algunas funciones internas que posee el
lenguaje R llamada rownames, lapply

Ejemplo

> # verificar tipos de datos para coltypes


> [Link](file = [Link](), header = T¡
X titlel title2
II string" "string" "string"
> # cargar fichero
> tabla <- csvread(file = [Link]
header = T,delimite
coltypes =
c ("string","string" 1 string"]
> tabla
titlel title2
1 fl 13 10
2 f2 11 8
3 f3 18 13
4 f4 "21,4" "19,4"
5 f5 16 12
6 f6 "12" <NA>
7 @ <NA> <NA>
> # nombre de filas
> rownames (tabla)
> # eliminar
<- tabla [,1
lera columna
O
> tabla[,1]
> # eliminar ultima
= NULL
fila
O
> tabla = tabla[-7,]
> # eliminar comillas
o
> tabla[] <-lapply(tabla, gsub, pattern='"' replacement=''

> #
O
cambiar coma por punto
> tabla[] <-lapply(tabla, gsub, pattern=' replacement='.'

<-►

> tabla
titlel title2
fl 13 10
f2 11 8
f3 18 13

110
111
1. csv

f4 21.4 19.4
f5 16 12
f6 12 <NA>
> View(tabla) #--> ver por interfaz

como los nombres de las filas son “1,2,3,4,5,6,7”, entonces los cambio
por la lera columna.

elimino la lera columna sobrante que es “fl,f2,f3,f4,f5,f6,@”

O elimino la ultima fila que solo contiene al @ como único elemento.

uso lapply para detectar las comillas y eliminarlos.

O usando la misma función con el objetivo de cambiar comas por puntos.

111
112
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

2.1.2 Exportar
interna
Para la exportación de fichero csv en R es muy sencillo, solamente se requiere
de algunos comandos y listo. Al igual que en el caso de importar fichero, se
presentará por librerías y el motivo es nada mas que usted elija con cual se
siente más cómodo ya sea por rendimiento u otras funciones configurables. A
continuación se presentará algunas librerías populares.

[Link](x, file, [Link], fileEncoding)

X (objeto) Hace referencia al objeto creado y que


contiene los datos.
file (string) Se necesita el directorio donde se va
a guardar el fichero y la extensión, ejemplo
file="D:/User/[Link]"
[Link] (boolean) Pregunta si, ¿el objeto creado tiene
nombre en las filas?
fileEncoding (string) Debes indicar la codificación del fichero,
los más usados "latinl", "UTF-8".

112
113
1. csv

readr

write_csv(x, path, col_names, na, quote_escape )


write_excel_csv(x, path, append, col_names, na, delim)

X (objeto) Hace referencia al objeto creado y que


contiene los datos.
path (string) Se necesita el directorio donde se va
a guardar el fichero y la extensión, ejemplo
path="D:/User/[Link]"
col_names (boolean) Pregunta si, ¿el objeto creado tiene
nombre en las columnas?
na (string) Si algún elemento esta vacío entonces
esta función permitirá modificar ese valor.
quote_escape (string) Esto funciona para los elementos que es¬
tán entre comillas, permite modificar los valores.
append (boolean) Si el fichero existe, entonces este al ser
TRUE solamente actualizará los datos.
delim (string) permite modificar el delimitador o sepa¬
rador de cada elemento. Por ejemplo delim=", "

Lo primero es abrir la librería para poder usar esta función, así que ejecute lo
siguiente:

<
> library(readr)

Si al ejecutar library (readr) genera un error, entonces significa que no


has instalado, por favor usar install .packages ("readr" )

113
114
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

> write_csv(x = dt,path = [Link](),append = F,col_names


^ = T,na =
quote_escape = "double")

> write_excel_csv(x = dt,path = [Link](),append =


T,col_names = T,
na = "",delim =

Recuerda que fí[Link]() es una interfaz gráfica. Si el archivo existe este


lo va a actualizador de acuerdo a append, por favor cuidado al usar.

114
115
1. csv

[Link]

fwrite(x, file, sep, [Link], dec, na)

X (objeto) Hace referencia al objeto creado y que


contiene los datos.
file (string) Se necesita el directorio donde se va
a guardar el fichero y la extensión, ejemplo
file="D:/User/[Link]"
[Link] (boolean) Pregunta si, ¿el objeto creado tiene
nombre en las columnas?
na (string) Si algún elemento esta vacío entonces
esta función permitirá modificar ese valor.
sep (string) Permite modificar el tipo de separador
que se usará.
dec (string) Si hay elementos tipo decimal, entonces
dec permite cambiar el símbolo.

Al igual que la librería anterior, esta también es una librería externa que se
necesita instalar primero para después incluir en el actual proyecto.

e
> [Link]("[Link]")
> library([Link])
4

115
116 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

2.2 SPSS
También conocido por su nombre completo “IBM SPSS Statistics”, software
dedicado a estadísticos muy similar al lenguaje R pero con la diferencia de su
costo. En R hay muchas librerías que cumplen con la función de importar y
exportar, claro que cada una de ellas ofrece distintas opciones.

1.2.1 Importar
foreign
Se comenzará con una librería interna llamada “foreign”, esta librería ofrece
no solamente abrir ficheros .sav sino diversas extensiones de otros softwares que
en su gran mayoría no son libres , empezamos con:

[Link](file, [Link], use. valué, labels, [Link])

file (enlace) Se coloca el directorio o el enlace donde


esta el fichero.
[Link] (booleano) Si es TRUE entonces convierte a da¬
ta. frame, caso contrario será una lista.
use .valué .labels (booleano) Permite escoger si los elementos son
tomados desde las etiquetas (valores) o se mantie¬
ne como numérico.
[Link] (booleano) Si hay elementos vacíos entonces con
TRUE lo rellena con NA

Esta librería esta incluida dentro del lenguaje R pero se necesita llamarlo o
incluir en el trabajo actual para poder usarlo y para ello use lo siguiente:

> library(foreign)
# si deseas actualizar libreria
> [Link]("foreign")
4

116
117
2. SPSS

# al usar [Link]é.labels = T, estoy tomando los valores


# de las etiquetas.

117
118 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

haven

La siguiente librería llamada haven que esta dentro de tidyverse, ofrece no


solamente abrir el fichero “.sav” sino mas bien su antecesor “.por”. La librería tiene
dos funciones “read_sav() y read_por()” pero se puede omitir estas dos funciones
y usar de forma general “read_spss()” que se encargará de abrir por medio de la
extensión que el fichero tenga.
Hablemos sobre que beneficios ofrece esta librería y considero que los impor¬
tantes son:

✓ Permite seleccionar algunas columnas que usted desea.

✓ Permite seleccionar una cierta cantidad de datos.

✓ Al igual que la librería anterior, también permite el rellenado de elementos


vacíos.

read_spss(file, user_na, col_select, n_max)

file (enlace) Se coloca el directorio o el enlace donde


esta el fichero (sav,por y zsav).
col_select (lista) Permite seleccionar las columnas que se
desea cargar. col select= c (1, 3, 5)
n_max (numérico) Colocar la cantidad de filas a proce¬
sar, acepta una longitud.
user_na (booleano) Si hay elementos vacíos entonces con
TRUE lo rellena con NA

Dato importante: La librería es externa y se tiene que obligatoriamen¬


te INSTALARLO.

> [Link]("haven")
> library(haven)

Se necesita internet para instalar.


fc 4

118
119
2. SPSS

col_select = c(l,3),
n_max = 4)

En se encargará de rellenar los elementos vacios con NA, en quiero


solamente incluir las columnas 1 y 3 en la importación, por ultimo en O
solo necesito importar 4 filas.

Por ultimo una librería muy interesante llamada readspss por el nombre
se deduce que solamente se encargar de abrir ficheros que solo pertenezcan
al software IBM SPSS y claro dentro de las extensiones son “,sav, .zsav, .por
y ,sav encriptado (con contraseña)”. Por el momento esta en desarrollo y se
necesita de Rtools para su instalación por lo que hace un poco complejo y si usted
quiere instalarlo entonces ingrese en esta url [Link]
readspss

119
120 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

2.2.2 Exportar
foreign
Se comienza con la librería foreign que ya ha sido conocido en importar
ficheros, entonces ahora nos enfocaremos en como exportar ficheros para el
software SPSS. La librería por defecto exporta dos ficheros y uno de ellos es un
documento de texto en formato “.txt”(es posible que usted se halla topado con este
tipo de fichero).

¿ Porque exporta un fichero “.txt”?


La razón es que ahí se almacena la base de datos o los elementos que son
visibles en SPSS como Vista de Datos(Data View).

Lo que si debe tener cuidado es en el nombre ya que en si hay dos ficheros


que el nombre debe ser el mismo pero la extensión no. Si por alguna razón los
nombre de los ficheros son distintos entonces al abrir el archivo con la extensión
“.sps” con el software SPSS te generará un error que tiene que ver con que no se
ha encontrado el otro fichero. La manera correcta es por ejemplo:

✓ exportar, sps

✓ [Link]

[Link](df, datafile, codefile, package)

df (objeto) Se coloca el objeto que se desea exportar,


de preferencia [Link]
datafile (string) Necesita la dirección donde se almace¬
narála base de datos, fichero con extensión
(txt). datafile="c:/[Link]"
codefile (string) Al igual que datafile, és e debe tener
el mismo nombre pero la extens ión debe ser
(sps) codefile="c:/[Link]"
package (string) Por tratarse únicamente del software
SPSS usar package="SPSS"

Nota importante: Incluir librería en el trabajo actual, si ya ejecutó


ESTE CÓDIGO POR FAVOR OMITIR

120
121
2. SPSS

> library(foreign)
# si deseas actualizar libreria
> [Link]("foreign")

121
122
CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

haven
Como se había hablado anteriormente de la librería externa llamada haven,
también cuenta con una función que permite exportar a “.sav y .zsav”. Para
exportar cuenta con argumentos muy limitados como por ejemplo escoges si se
exporta de forma comprimida (.zsav) o no, aquí toma encuenta la extensión que
se esta nombrando. Por otro lado también acepta la fuente de los datos a exportar
como “[Link]”.

write_sav(data, path, compress)

data (objeto) Se coloca el objeto que se desea exportar,


de preferencia [Link]
compress (booleano) Si compress=FALSE entonces usar
la extensión a “.sav”, caso contrario se esta di¬
ciendo que use otra extensión “.zsav”.
path (string) Necesita la dirección donde se almacena¬
rá la base de datos, si compress=TRUE entonces
cambiar la extensión a “.zsav”( referencia a com¬
primido), caso contrario solo usar “.sav”

Nota importante: Incluir librería en el trabajo actual, si ya ejecutó


ESTE CÓDIGO ANTERIORMENTE POR FAVOR OMITIR

> [Link]("haven")
> library(haven)
t 4

122
123
2. SPSS

123
124 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

3.3 Excel
Por tratarse de un software muy popular sobre todo sencilla interfaz, sin
embargo el único inconveniente seria su precio por usar o mejor dicho la licencia
por equipo, estos precios varían de acuerdo a la versión del software.
Las versiones de Excel que almacenan la base de datos son dos “.xls” y “.xlsx”,
lo que seria de gran importancia conocer para poder usar de acuerdo a las librerías
que ofrece la comunidad de R.

1.3.1 Importar
readxl

read_excel(path, sheet, range,col_names,na)


De la librería tidyverse quien tiene un montón de funciones que son muy
útiles para la ciencia de datos, en esta ocasión nos enfocaremos en como importar
ficheros de Excel. Esta librería ofrece también cambiar valores nulos o vacíos y la
opción de la cantidad de elementos a cargar.

path (string) Se coloca la dirección donde esta el ar¬


chivo Excel.
sheet (str ing) Hace referencia a la hoja donde esta los
date)s (se encuentra en hi parte inferior), por ejem-
pío "tabla","Hojal"

range (string) Se debe colocar los nombres de colurana


y numero que Excel usa psLra hacer referenc ia a
los elementos, por ejemplo range="B5:E5"

col_names (booleano) Si es TRUE, estará diciendo que la pri¬


mera fila contiene los nombres de las columnas,
na (string) Sirve para rellenar elementos vacíos.

124
3. EXCEL
125

Nota importante: Instalar primero la librería

r
# librería completa
> [Link]("tidyverse")
# instalar solo para excel
> [Link]("readxl")
#

También se puede reducir el código si solo usamos range en vez de sheet. Sola¬
mente se necesita el nombre de la hoja de datos, seguido un signo de admiración
y luego escribimos el rango.

> read_excel([Link]() ,
range = "tabla!B4:FIO"
col_names = T)

125
126 CAPITULO 7. IMPORTANDO Y EXPORTANDO FICHEROS

2.3.2 Exportar
writexl

write_xlsx(x, path, col_names,format_headers)


Se presenta una nueva librería llamada writexl, su única función es escribir
un archivo xlsx para versiones superiores de Excel 2010, así que será de mucha
utilidad si solo quieres exportar tu base de datos de R a Excel.

X [objeto) Se coloca el objeto que tiene la base de


datos.
path [string) Colocar la dirección donde
deseas guardar el archivo, ejemplo
path="c:/carpeta/[Link]" .

col_names (booleano) Si es TRUE, estará diciendo que la pri¬


mera fila contiene los nombres de las columnas.
format_headers [booleano) Si en col_names=T y
f ormat_headers=T , estarás permitiendo que se
escriba los nombres en negrita y centrado.

Nota importante: Instalar primero la librería


e
# Instalar libreria
> [Link]("writexl" )
#
# abrir libreria
> library(writexl)
4

No se exporta los nombres de las filas “row.ñames” a Excel.

126
127
3. EXCEL

127
Base de Datos

1.1 MYSQL
Como dice wikipedia. “MySQL es un sistema de gestión de base de datos
relacional (RDBMS) de código abierto, basado en lenguaje de consulta estructurado
(SQL)”. Debido a su gran utilidad en trabajos, R ha decidido incluir una librería
llamada RMYSQL.

129
130 CAPITULO 8. BASE DE DATOS

Figura 8.1: COMO CONECTAR EN RMYSQL

controlador

port = 3306,

)
Nota: los valores dados son un ejemplo, usted trate de cambiarlos

En la página [Link] ofrece un servidor remoto con


100MB de espacio libre y además se puede crear tantas tablas como se de¬
sea. En este libro se tomará como referencia esta web para simular una conexión
remota no local.

130
1. MYSQL
131

Figura 8.2: COMO REGISTRARSE EN remotemysql

Create Account

Logm Create Account Torgot Password-5

FREE MYSQL Una vez creada


Gec a free remóte MySQL database
la cuenta, use
login e inicie
By signing up to use this Service you agree to our Terms and Conditions
sesión

Databases
frT DASHBOARD
Alt your databases are listed below. Create news ones. upto a máximum of 3. with the button
at the bottom.
f g[] DATABASES^

LEARN MYSQL

USERNAME CREATED DATE

por favor guarde los LS6lpCIKMv 0.02 MB 2020-03-13 [Link]

datos:
Username:
Database:
Password:

Nombre de la tabla: TABLA Agregar 4 \±\ columna(s) Continuar

131
132
CAPITULO 8. BASE DE DATOS

Bien, para comenzar se necesita instalar lo siguiente:

> [Link]("RMySQL")

# library(DBI)
> library(RMySQL)
4

1.1.1 Conectar
Una vez registrado en la página web y obtenido los datos como Username,
Database y Passsword. Entonces nos conectamos de la siguiente manera:

> con = dbConnect(RMySQL::MySQL(), dbname="LVlpCJKMv",


--» username="LVlpCJKMv",
password="I6xLtEGSQt" , host="[Link]")

Importante: La conexión dura muy poco así que por cada


5 minutos intentar nuevamente ejecutar este objeto “con”,
caso contrario no se podrá hacer consultas.

Como nuestra tabla se llama “TB” y queremos saber los elementos que con¬
tiene, bueno en R hay dos maneras de hacer este proceso: mediante consulta
(dbGetQuery) o por una función sencilla(dbReadTable). Ambos retornan una
clase tipo [Link].

QdbRÜdTabil^^^^^^B '/dbGetQuery

> sql <- "SELECT * FROM TB"


> tb=dbReadTable(con,"TB")
> tb = dbGetQuery(con,sql)
#-> verificar <-
#-> verificar <-
> tb
> tb
[1] ID Edad Genero Vota
[1] ID Edad Genero Vota
<0 rows> (or 0-length
<0 rows> (or 0-length
^ row.ñames)
^ row.ñames)
> class(tb)
> class(tb)
[1] "[Link]"
[1] "[Link]"

132
1. MYSQL
133

La tabla “TB” no tiene ningún elemento, únicamente genera un reporte indican¬


do que se tiene 0 filas. Si deseas agregar elementos a la base de datos remota, en
RMySQL hay una función que funciona contrario al dbGetQuery y que es llamado
dbSendQuery (con .consulta).

133
134
CAPITULO 8. BASE DE DATOS

2.1.2 Insertar

> con-^

dbSendQuery (conn. statement)

77 'mujer' ‘no‘

76 'hombre' ‘no'

Intentaremos crear un objeto “sql”con el objetivo de escribir la sintaxis SQL y


que más después nos servirá para hacer consultas. La función más efectiva en R
es la llamada paste().

INota: Primero debes saber que tipo de valores recibe cada


columna: Edad(numerico),Genero(char),Vota(char)

"INSERT INTO TB() VALUES()"

Edad(int)

> tmp <- "INSERT INTO TB(Edad)"


> Ib <- paste(tmp,"VALUES(",tab$x[1sep="")
> Ib
[1] "INSERT INTO TB(Edad)VALUES(34)"

Genero(char)

> tmp <- "INSERT INTO TB(Genero)"


> Ib <- paste(tmp,"VALUES('",tab$y[1]sep="")
> Ib
[1] "INSERT INTO TB(Genero)VALUES('hombre')"

Vota(char)

134
1. MYSQL
135

> tmp <- "INSERT INTO TB(Vota)"


> Ib <- paste(tmp,"VALUEStab$z[1sep="")
> Ib
[1] "INSERT INTO TB (Vota)VALUES('no') "

Has notado que tanto los valores de Vota como Genero van entre comillas
simples y esto es simplemente porque ambos reciben solo caracteres (char), esto
es importante ya que si no lo usas y ejecutas el comando en SQL es muy probable
que te genere un error.

Se intentará generar valores aleatorios en R usando la super función sample()


que además funciona con caracteres.

> al <- function(i = 1) {


edad <- sample(x = c (20:54),s ize = i, replace = T)
genero <- sample(x = c("hombre","mujer"),size =
i, replace = T)
vota <- sample(x = c("si","no"),size = i,replace = T)
return([Link]("x"= edad,"y"=genero,"z"= vota))
}

> tab <- al (i = 30)

Usaremos la siguiente función siguiente para enviar los 30 datos:

ydbSendQueryfconn, statement)

for (i in seq len(nrow(tab))){


sql = "INSERT INTO TB(Edad,Genero,Vota) VALUES("
Ib = paste(sql,tab$x[i],"," ,"'",tab$y[i],"'" ,","
^ ,"'",tab$z [i],"'",") " )
dbSendQuery(con,statement = Ib)

El primer valor que contiene Ib es:

[1]
- "INSERT INTO TB(Edad,Genero,Vota) VALUES(34,'hombreno')"

135
136 CAPITULO 8. BASE DE DATOS

I
Para ver si ha procedido con la subida de los datos

Nota: recuerda ejecutar el objeto con por si genera un error


similar a object 'con' not found

> tabla <- dbReadTable(conn = con, ñame = "TB")


> tabla
ID Edad Genero Vota
1 1 51 mujer no
2 2 51 hombre no

20 20 51 hombre si

29 29 23 hombre si
30 30 34 mujer si

136
137
1. MYSQL

3.1.3 Editar

Como en el caso anterior que usamos dbSendQuery, también nos sirve para
editar un elemento de una determinada tabla ya que se esta hablando de hacer
una consulta y solamente se cambiará “INSERT INTO” por “UPDATE .. SET”.

"UPDATE TB SET coll=?, COl2=?, WHERE ID=?;"

Por ejemplo quiero cambiar la fila 24 que contiene

I Nota: recuerda ejecutar el objeto con por si genera un error


similar a object 'con' not found

> dbGetQuery(conn = con,"SELECT * FROM TB WHERE ID = 24 ")


ID Edad Genero Vota
1 24 49 hombre si

Intentaremos hacerlo con otra función que simplifica lo de paste() en lo que


respecta al gran espacio que se ocupa para definir la mezcla entre objetos y
caracteres.

sprintf("%s %s %s ", uno,dos,tres)

Verificamos

137
138 CAPITULO 8. BASE DE DATOS

> dbGetQuery(con,"SELECT * FROM TB WHERE ID = 24 ")


ID Edad Genero Vota
124 54 mujer si

138
139
1. MYSQL

4.1.4 Eliminar
La sintaxis para eliminar un determinado elemento en sql es el siguiente

"DELETE FROM TB WHERE condición;

Por ejemplo quiero eliminar la fila 24 y eso seria así

> dbSendQuery(con,"DELETE FROM TB WHERE ID = 24")


<MySQLResult:569974448,4,0>

Verificamos

> dbGetQuery(con,"SELECT * FROM TB WHERE ID>21 AND ID<27")


ID Edad Genero Vota
1 22 52 mujer si
2 23 39 hombre si
3 25 53 hombre si
4 26 52 mujer no

Si intentas eliminar una columna, usa lo siguiente:

"ALTER TABLE TB DROP COLUMN col;"

TB Nombre de la tabla

col Nombre de la columna

I Importante: La columna que intentas eliminar no debe


tener relación con otra tabla o sino te generaría un error

Pero si su caso es que quiere eliminar la tabla por completo, use

"DROP TABLE TB;"

O solamente elimine el contenido de la tabla pero no la tabla en si

"TRUNCATE TABLE TB; "

139
Creando Reportes

1.1 MS Word
Existe una librería llamada officer que permite generar un archivo .docx
compatible con las versiones actuales de Word y lo mejor es que no es necesario
instalar el software Microsoft office. Es una librería externa y así que se necesita
instalar lo siguiente.

> [Link]("officer";

, Es recomendable tener la versión de R actualizado

Algunas funciones muy importantes en officer:

Cuadro 9.1: Ofñcer funciones

función descripción
read_docx() iniciar documento
body_add_par(x,“ ”,style,pos) agregar párrafos
body_add_table(x,value,style) agregar tabla
body_add_gg(x,value,width,height,style) agregar gráficos (solo ggplot)
body_add_img(x, src, width, height, sty le) agregar gráficos externos

141
142
CAPITULO 9. CREANDO REPORTES

Algunos estilos comúnmente usados

Cuadro 9.2: Ofñcer style

1 style descripción |
“Normal” texto normal
“heading 1” primer subtitulo
“heading 2” segundo subtitulo
“heading 3” tercer subtitulo
“ t able_t e mplat e ” estilo 1 en tablas
“Table Professional” estilo 2 en tablas
“Light List Accent 2” estilo 3 en tablas
“table title” titulo para tablas
“graphic title” titulo para gráficos

Si usted tiene instalado Rstudio intente crear un nuevo fichero R script teclean-
do ( Ctrl F]+[ÑJ
) o desde su IDE preferido del lenguaje R trate de crear un nuevo
fichero R script, guárdelo. Una vez que tiene un fichero “documento.R” dentro de
él escriba lo siguiente:

# librerías
#-
> library(officer)
> library(magrittr)
> library(ggplot2)
> library(plotrix)
#-
> directorio <- "D:/reporte/word/"

* O
> sp <- c (1,1, 1, 4,4,4, 4, 4, 4, 4, 3, 3, 3,3, 3, 2,
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2)
> indicador <- factor(x = sp ,levels = c(l:4),
labels = c("Nada Satisfecho",
"Poco Satisfecho",
"Satisfecho",
"Muy Satisfecho"))
> tab <- [Link](table(indicador))

#- 0
> grafico3 <- ggplot(tab,aes(x="",y=tab$Freq,
fill=factor(tab$indicador))) +

142
1. MS WORD
143

geom_bar(width = l,stat = "identity") +


coord_jpolar ( " y " ) +
geom_text(aes(label =
paste(round(Freq/sum(Freq)*100,1),"%")) ,
position=position_stack(vjust = 0.5))+
theme_void(base_size = 18)+labs(fill="Indicador")

#- ©
> fig <- paste(directorio,"[Link]",sep = "")
> ggsave(plot = grafico3,filename = fig,device = "wmf",
dpi = 72,limitsize = T)

#- o
> color <- c("#526189","#f6f6f6","#d3d9e7","#a3acc5")
#-
> fan paste(directorio,"[Link]",sep = "")
<-
> [Link](file = fan,height = 5, width = 10,
pointsize = 14)
> [Link](x = tab$Freq,labels=[Link](tab$indicador),
col = color,ticks = 30)
> [Link]()
#-
> párrafo = " Se ha hecho una investigación en una empresa
que cuentra con 32 empleados, cuyo objetivo es
saber si están satisfechos en su desempeño laboral
dentro de la empresa:"
#-———-:-—

> guardar <- paste(directorio,"[Link]",sep="")


> do cu <- read_docx()
> docu <- docu %>%
body_add_par("Reporte ...",style = "heading 1") %>%
body_add_par("Satisfacción Laboral",
style = "heading 2") %>%
body_add_par(párrafo, style = "Normal") %>%
body_add_table(tab,style = "Light List Accent 2") %>%
body_add_gg(docu, valué = grafico3,
style = "centered",width=5,height=5) %>%
body_add_par(valué = "Gráfico Pie",
style = "graphic title") %>%
body_add_par("",style = "Normal") %>% #- nueva linea
body_add_par(párrafo,style = "Normal") %>%
body_add_par("Amabilidad en su atención",
style = "heading 2") %>%

143
144
CAPITULO 9. CREANDO REPORTES

body_add_img(src = fan,height = 3,
width = ,
6 pos = "after" )%>%
body_add_par(valué = "Gráfico abanico",
style = "graphic tifie") %>%
body_add_par("",style = "Normal") %>% #- nueva linea
body_add_par(párrafo,style = "Normal") %>%
body_add_par("Representación personal" ,
style = "heading 2")
> print(docu,target = guardar )

En solamente se crea la data, con la ayuda de table() se ha podido sumar


de acuerdo a la escala dada(l,2,3,4).

En esa misma data “tab” se ha hecho un gráfico de torta usando ggplot.


Presta atención en body_add_gg()

En O se usa ggsave para exportar gráfico y después se obtiene la referencia


(fig)
body_add_img(src=fig) para mayor calidad al exportar.

En es igual al por el motivo que se tendrá que exportar la gráfica y dicha


dirección se almacena en el objeto fan para después usarlo en body_add_img(
src= fan)

En el último comando print (docu, target) en “target” se coloca el directorio


donde se guardará el fichero “.docx”, por ejemplo
target="D:/reporte/word/[Link]"

144
1. MS WORD
145

Figura 9.1: Diseño al compilar A

1. Reporte ...
1.1. Satisfacción Laboral
Se ha hecho una investigación en una empresa que cuentra con 32 empleados,
cuyo objetivo es saber si están satisfechos en su desempeño laboral dentro de la
empresa:_
indicador Freq
Nada Satisfecho 3
Poco Satisfecho 17
Satisfecho 5
Muy Satisfecho 7

Indicador
Nada Satisfecho
Poco Satisfecho
Satisfecho
Muy Satisfecho

Gráfico Pie

Se ha hecho una investigación en una empresa que cuentra con 32 empleados,


cuyo objetivo es saber si están satisfechos en su desempeño laboral dentro de la
empresa:

145
146 CAPITULO 9. CREANDO REPORTES

Figura 9.2: Diseño al compilar B

1.2. Amabilidad en su atención

Gráfico abanico

Se ha hecho una investigación en una empresa que cuentra con 32 empleados,


cuyo objetivo es saber si están satisfechos en su desempeño laboral dentro de la
empresa:

1.3. Representación personal

146
147
2. MARKDOWN

2.2 Markdown

Para crear reportes de tipo Markdown con R, es 100 % recomendable usar el


software Rstudio por el único motivo que tiene compatibilidad con pandoc y este a
su vez convierte a formatos como “html, pdf y word”. ¿Genial no te parece?

Debo hacerte recordar que la exportación a word no es tan buena, en especial


las imágenes que no son en alta calidad.

Figura 9.3: Crear ñchero Rmarkdown desde Rstudio

New File é> R Script Ctrl+Shift+N New R Markdown

£2* Open File... Ctrl+C


bi R Notebook Q) Document Title: Reporte
Reopen with Encoding...
C R Markdown...
Presentation Author: Tu Nombre
Recent Files
■R) Shiny Web App...
R Shiny Default Output Format:
Import Dataset Plumber API...
From Témplate ® HTML
Save Ctrl+S Text File Recommended format for authoring (you can switch
Save As... cpp to PDF or Word output anytime).
C++ File
Rename fe Python Script O PDF
Save with Encoding... fe SQL Script
PDF output requires TeX (MiKTeX on Windows,
MacTeX 2013+ on OS X, TeX Uve 2013+ on Linux).
Save All Ctrl+Alt+S f Stan File
O Word
s#' Knit Document Ctrl+Shift+K e D3 Script
Previewing Word documents requires an ¡nstallation
of MS Word (or Ubre/Open Office on Linux).
Compile Report... a R Sweave

Print... fe R HTML

Cióse Ctrl+W
R Documentation
Cióse All Ctrl+Shift+W

Cióse All Except Current Ctrl+Shift+Alt+W

OK Cancel

Otro dato importante es que después de guardar el fichero con ( [ctríj + fs^ ),
intente abrirlo en codificación utf-8 para que así permita reconocer texto español
como tilde y otros casos como la eñe.

147
148 CAPITULO 9. CREANDO REPORTES

Figura 9.4: Codiñcación del ñchero global

File Edit Code View Session Debug Profile Help

Install Packages...
Options
(J> Checkfor Package Updates...

Editlng Display
General
Completion Diagnostlcs
Versión Control ►

General Shell...
Code ■■
Ensure that source files end wlth newline
Terminal ►
!] Appearance Strip trailing horizontal whitespace when saving
✓ Restore last cursor position when opening file Jobs ►
fAsk]
Pane Layout
Serialization
Addins ►
Asen
| Packages BIG5
Une ending conversión: Platform Nadve v] GB18030 Keyboard Shortcuts Help Shift+Alt+K
GB2312
*5* R Markdown Default text encodlng; Modify Keyboard Shortcuts...
ISO-2022-JP
[Ask] Change... ISO-2022-KR
C-‘~ Sweave ISO-8859-1 Project Options...
ISO-8859-2
Spelling ISO-8859-7
SHIFT-JIS 1 Global Options...
WINDOWS-1252
^ Git/SVN

Publishing
2) Show all encodings

H Terminal

D
OK Cancel

A\

Rstudio convierte el archivo .Rmd a pdf mediante el uso de Pandoc y ETpX.


Como todo documento, siempre tiene su cabecera o la configuración que
permite definir detalles como:

- Cabecera -

title: "Reporte"
author: "Tu nombre"
date: '2020-03-12'
documentclass: article
classoption: 12pt,letter,twocolumn
geometry: margin=lin
header-includes:
- \usepackage[spanish]{babel}
output:
pdf_document:
df_print: kable
fig_caption: yes
toe: yes
geometry: margin=lin
papersize: letter

148
149
2. MARKDOWN

documentclass Clase de documento (árdele,book,report,memoir,beamer)

classoption hay tres:

tamaño de letra lOpt, llpty 12pt.


tamaño de papel a4paper,a5paper,legalpaper ...
tipo onecolumn y twocolumn.

geometry la geometría del papel y margenes admitidos(top,left,right), recomiendo


dar una revisada a su documentación [Link]
latex/contrib/geometry/[Link] y también en el capitulo 9 sección
3.3 de este libro.

header_includes Incluir paquetes, si desea que los títulos de las tablas y de


figuras estén en la parte superior o top en ingles, agrega a continuación:
\usepackage{floatrow},después
\floatsetup [figure] {capposition=top} y por último
\floatsetup[table]{capposition=top}

Todo lo que esta dentro de pdf_document permite tanto como incluir toe (lab la de
contenidos) como títulos en gráficos y tipo de tabla.

149
150
CAPITULO 9. CREANDO REPORTES

RMarkdown ofrece compilar varios formatos como son: HTML, PDF Y Word

Figura 9.5: Export

I ¿cL i 1 ✓ A 5# X

e Knit to HTML
0
Knit to PDF

* Knit to Word

Knit with Parameters...

Generar PDF

La exportación a pdf no funcionará si no tienes instalado los


softwares MiKTeX y pandoc (descargar ultima versión). Si estas
en Windows, ambos deben estar en las variables de entorno (path
and environment).Revise el tema instalación cap 3.3

1.2.1 Texto Normal

Los saltos de líneas o líneas vacías juegan un papel muy importante en Mark-
down, tales permiten separar y crear párrafos. Markdown resulta ser mas sencillo
para crear artículos rápidos pero sino respetas ciertas reglas pueda que te compli¬
ques.

secciones o encabezados

Los encabezados se dividen en seis niveles:

150
2. MARKDOWN
151

Cuadro 9.3: Lista de Encabezados

1 Escribir Produce jj

# Encabezado 1 Encabezado 1
## Encabezado 2 Encabezado 2
### Encabezado 3 Encabezado 3
#### Encabezado 4 Encabezado 4
##### Encabezado 5 Encabezado 5
###### Encabezado 6 Encabezado 6

estilos en caracteres
Para usar itálica simplemente se usa un asterisco “*texto en itálica*” o un
guión bajo “_texto en itálica_” pero si al asterisco se le agrega otro asterisco,
esto pasa a ser negrita “**texto en negrita**”.
También esta el subrayado y KTj}Xofrece su comando
“$\underline{texto subrayado}$”.

Cuadro 9.4: Lista de estilos

1 Escribir Produce |
★itálica* itálica
* *negrita* * negrita
* *_itanegrita_* * itanegrita
$\underline{subrayado}$ subrayado
~~tachado~~ tachado

**Modo Html**

Este es un texto en *_itálica_* pero a la vez es <br/>


★★negrita** si se agrega otro '*'. Además puedo usar <br/>
ambos a la vez **_itálica en negrita_** <br/>

el '<br>' es para saltos de linea <br/>


en Html <br/>

★★Modo Látex pdf**

también puedes usar \newline


otra linea

151
152 CAPITULO 9. CREANDO REPORTES

Modo Html

Este es un texto en itálica pero a la vez es negrita si se agrega otro


Además puedo usar ambos a la vez itálica en negrita

el <br > es para saltos de linea en Html

Modo Látex pdf

también puedes usar


otra linea

listas
Si estas en un párrafo o cualquier otro caso, da un salto de línea para crear
la lista. Las listas se crean mediante lo siguiente: un espacio seguido de un
guión(número o letra) seguido de un espacio y después el texto que deseas en esa
lista, por ejemplo:

p a r r a f0 cua 1 qui era


_
1ista
-
1ista 0
_
1 i sta t
-
1 ist i 1)

Los cuadrados representa la separación de espacios creados con la barra espadadora,


es muy importante que hagas esto

152
2. MARKDOWN
153

- Listas - Digamos un párrafo cualquiera


• - un párrafo cualquiera
. lista a
- lista a
- lista b
. lista b
- lista bl
o lista b 1
- lista bl.1
. lista b 1.1
Otra lista
Otra lista

a. lista 1 a. lista a
b. lista 2
- lista bl b. lista b
- lista bl.1
o lista b 1
. lista b 1.1

¿Le agrada R Markdown?

M Si

□ No

También esta la citas en bloques, presta atención al comando <br> que en


html es un salto de linea y ETgX es \par. Si exportas a documento pdf, para
saltos de linea reemplaza <br> por \par:

> Cita en bloque <br>


Cita en bloque
continua en <br>
continua en
otra linea...
otra linea ...

> Cita
Cita en bloque
> en bloque

notas al pie de página

Esta función también muy importante al crear un documento y consiste en


usar [Al] para hacer referencia:

153
154 CAPITULO 9. CREANDO REPORTES

los otros 1 también se impri...


los otros [Al] también se impri..

[Al]:son java,php,Ruby,css
1 son java,php,Ruby,css

2.2.2 texto matemático


Hay varios símbolos que permiten imprimir textos matemáticos, por ejemplo si
deseo incluir un símbolo matemático en la misma linea: $\alpha$, esto generará
el símbolo a en la misma linea.

Con un $\pmb{\alpha}= 0.05$ se ...

\ [ Con un a = 0,05 se ...


aA {2 } = 2x+y
\] a2 = 2x +y
Aquí otra forma:
Aquí otra forma:
2
n— -
$$
n = \frae{2}{3}
$$

El símbolo \pmb {} permite convertir únicamente el texto matemático en negri¬


ta.

3.2.3 código
Existe una lista de infinidades lenguajes de programación y Rmarkdown tam¬
bién cuenta con la función de incluir la sintaxis de dicho lenguaje para ser
mostrado en el documento.

En una linea va un 'codigo' simple

python
import statistics as stad

tr = [32, 13, 25, 36, 56, 24, 11, 28, 45, 31,23,38]

154
2. MARKDOWN
155

print([Link](tr))
#[23.25, 29.5, 37.5]

"html
<button type="button">Boton</button>

En una linea va un codigo simple

import statistics as stad

tr = [32, 13, 25, 36, 56, 24, 11, 28, 45, 31,23,38]
print([Link](tr))
#[23.25, 29.5, 37.5]

<button type="button">Boton</button>

155
156 CAPITULO 9. CREANDO REPORTES

4.2.4 figuras
Librerías R importantes que se deben de incluir dentro del documento:

Figura 9.6: Librerías importantes RMarkdown

'''{r ,warning=FALSE}
library (knitr)
library (ggplot2)
library(plotrix)

y en el directorio se encuentra así

exportar

—« markdown_fil.es
—«grá[Link]
—«[Link]
—«[Link]

locales
En el directorio tengo dos imágenes: grá[Link] y [Link]
Intentaré usar esas imágenes para incluir en el documento actual:

" '{r img, echo=TRUE,[Link]="45%",[Link]="grafico",


[Link]="!htbp",[Link]='center1}

include_graphics("grá[Link]")

hago referencia a la figura \ref{fig:img}

lo que se ha hecho es aplicar reducción del tamaño de la imagen de manera


proporcional ([Link]) y después la posición precisa donde quiero que se
encuentre ([Link]).

156
157
2. MARKDOWN

Para mas información por favor vi¬


site la tabla 9.21

creadas
Aquí se necesitarán las librerías pero primero intentemos crear nuestro marco
de datos y se muestra a continuación:

Nuestro marco de datos es tab y con ello intente hacer gráficos como por
ejemplo.

'''{r graf, echo=FALSE,[Link]="45%",[Link]=" Gráfico Likert",


[Link]="!htbp",[Link]=’center1}

ggplot(tab,aes_(x="",y=tab$Freq,fill=factor(tab$indicador)))+
geom_bar(width = l,stat = "identity")+
coord_polar("y")+
geom_text(aes(label=paste(round(Freq/sum(Freq)* 100,1),"%")),
position=position_stack(vjust = 0.5))+
theme_void(base_size = 18)+labs(fill="Indicador")

157
158 CAPITULO 9. CREANDO REPORTES

Figura 9.7: ggplot en Rmarkdown

Indicador
| Nada Satisfecho
| Poco Satisfecho
Satisfecho
Muy Satisfecho

Figura 1: Gráfico Likert

5.2.5 tablas
Las tablas creadas en markdown solo consiste en lineas verticales y horizonta¬
les, lo que hace muy sencillo la manipulación.

crear
Se intentará crear tablas manualmente, es importante agregar que también se
puede agregar texto matemático y alineación por cada columna.

Tabla normal sin alinear


Tabla normal sin alinear

Cuadro 9.5: Tabla


| H1 | H2 | H3 1 H4 |
normal
1 i 1 1 1
| $\alpha$| 14 | 23 1 23 |
H1 H2 H3 H4
12 || 1 1 1
o 14 23 23
Table: Tabla normal 2 1

Tabla alineada por columnas Tabla alineada por columnas

| izquierda centro |derecha|


Cuadro 9.6: Tabla
1 . | . 1 • 1
alineada
1 $\alpha$ | 14 | 23333 |
| **a** | **b** * *_c_* *
H1 H2 H3

Table: Tabla alineada a 14 23333


a b c

158
159
2. MARKDOWN

librería
En la figura 9.6 agregar esta librería

library(kableExtra)

Una vez agregado necesitamos nuestra data tab (vea el Listing 1) y haga lo
siguiente

{r tabla,echo=F}
kable(tab,format="látex",booktabs=T,align="c",
caption="Tabla A")%>%
kable_styling(latex_options ="hold_position")%>%
column_spec(1,bold = T,color = "black")

Si quiere ver la referencia (vease **tabla \ref{tab:tabla}**)

Cuadro 3: Tabla A

indicador Freq

Nada Satisfecho 3
Poco Satisfecho 17
Satisfecho 5
Muy Satisfecho 7

Si quiere ver la referencia (vease tabla 3)

159
160 CAPITULO 9. CREANDO REPORTES

6.2.6 bibliografía
Las referencias de documentos como:libros,artículos,revistas,enlaces y otros.
Son almacenados desde un fichero externo llamado bibliografí[Link](no uses tilde),
para saber como obtener referencias desde software visite la sección 3.5 J. Primero
tenemos que agregar más elementos a nuestra cabecera:
- Agregar a Cabecera .-

bibliography: bibliografí[Link]
csl: [Link]
output:
pdf_document:
citation_package: natbib

citation_package es el paquete con el cual se va a procesar la bibliografía,


existen dos “natbib y biblatex”

El csl es el estilo que se le dará a nuestras referencias y zotero ofrece varios


estilos, por favor ingrese en esta dirección [Link] o este
otro [Link] y descarga el que más
se adapte a sus necesidades.

Por ejemplo tengo la siguiente bibliografía:

exportar

markdown files

—•bibliografía. bib

—*[Link]

—«gráfico, png
-^markdown. Rmd
—«[Link]

_ bibliografí[Link] _
@article{khan2020,
tifie = {Level of satisfaction regarding ...},
volume = {70},
issn = {0030-9982},
doi = {10.5455/JPMA.10977},
pages = {452—456},

160
2. MARKDOWN
161

number = {3},
journaltitle = {{JPMA}. The Journal of ...},
shortjournal = {J Pak Med Assoc},
author = {Khan, Muhammad Lakhmir and ...},
date = {2020-03},
pmid = {32207424},
keywords = {Level of satisfaction, ...}

Hago las siguientes referencias y en el último creo un encabezado


“# Referencia” únicamente para imprimir la bibliografía

@khan2020 también incluyo el término...

El autor @khan2020 también ...

El autor [@khan2020] también ...

El autor [@khan2020, pp. 453-454] también ...

# Referencias

Compila el documento haciendo clic en el icono "J " y elija pdf(ver figura
9.5) E intente usar natbib y biblatex en citation_package

output:
pdf_document:
citation_package: biblatex

161
162
CAPITULO 9. CREANDO REPORTES

Figura 9.8: Natbib vs Bíblatex

(a) natbib

Khan et al. también incluyo el término...


El autor Khan et al. también ...

El autor [Khan et al.] también ...


El autor [Khan et al., pp. 453-454] también ..

Referencias
Muhaminad Lakhmir Khan, Misbah Ghous, Imran Amjad, Munazza Nouman, and Irum
Yaqoob. Level of satisfaction regarding physical therapy Services in district poonch, azad
jammu kashmir. 70(3):452-456. ISSN 0030-9982. doi: 10.5455/JPMA.10977.

I A_a A i k A A k

(b) biblatex

Khan y col. [1] también incluyo el término... <


i ^
El autor Khan y col. [1] también ...

1 El autor [1] también ... {


> 4
El autor [1, pp. 453-454] también ...

Referencias
[1] Muhammad Lakhmir Khan y col. “Level of satisfaction regarding physical therapy
Services in district Poonch, Azad Jammu Kashmir”. En: JPMA. The Journal of the
Pakistán Medical Association 70.3 (mar. de 2020), págs. 452-456. ISSN: 0030-9982. DOI:
. 10.5455/JPMA. 10977.

A k A A_A k A

162
3. LATEX
163

3.3 Látex

Hay IDEs del lenguaje R que tienen incorporado la función llamada R Sweave
o mejor conocido en KTjXcomo knitr. Si usted tiene Rstudio instalado, inicie y
haga igual como se muestra en la imagen. Para guardar la ventana de la derecha
presione Ctrl

~~\o <a*- HJ
9 RScript Ctrl+Shift+N

lr< R Notebook

o. R Markdown...

R Shiny Web App

© Plumber API...

Text File
qn»j C++ File

Python Script

u SQL Script
© Stan File

©j 03 Script

R Sweave K
|
Create a new R
osK
Sweave document

9_ R Documentation

L/atex es un sistema de composición avanzado de texto, su función es crear


un documento de alta calidad como son: libros, artículos, reportes, cartas y otros.
Knitr es una librería del lenguaje R que permite la intercomunicación entre Rscript
y Látex, por medio de un fichero “.Rnw”.

El inconveniente al usar Rstudio es que no compila las bibliografías por lo que


se recurrirá a otros softwares libres como TeXmaker, TeXnicCenter y otros. Es
importante dejar la bibliografía para el final caso que al compilar con Rstudio
genera un fichero .tex y éste se lo compilará con los softwares mencionados
anteriormente.
Para tratar de entender como es que funciona LTjX, se presentará la estructura
de un documento.

163
164 CAPITULO 9. CREANDO REPORTES

Configuración

\documéntelass[llpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{microtype}
\usepackage[xllnames,table]{xcolor}
\usepackage{hyperref}
\usepackage{geomet ry}

Cuerpo

\begin{document}

\section{Hl}
\subsection{H2}
\subsubsection{H3}
%-este es un comentario —

\section{Hl}
\subsection{H2}
\subsubsection{H3}

\end{document}

I Importante: Si por casualidad te genera error al momen¬


to de compilar, instala MiKTeX desde [Link]
download

Se trabajará con la parte del cuerpo que es donde se comienza a redactar


el documento. Muy bien que tal si empezamos con un comando que permite la
entrada de código R.

<< >> =

164
3. LATEX
165

Figura 9.9: Geometría Látex

paper

paperheight

left
(inner)

paperwidth

debajo del paquete \usepackage{geometry} agrege este código, recuerde que


esto define la geometría de todo el documento.

\geometry{
paper=a4paper,
left=2.5cm,
right=3.8cm,
top=l.5cm,
bottom=l.5cm,
heightrounded,
marginparwidth=51pt,
marginparsep=17pt,
headsep=24pt,
}

Si desea verificar la geometría actual de su documento, agregue este paquete


después de geometiy. Después compile y observe

\usepackage{layout} % paquete

\makeatletter
\renewcontmand* {\lay@value} [2] {%
\strip@pt\dimexprO.351459\dimexpr\csname#2\endcsname\relax\relax
}
\makeatother

\begin{document}
\layout % crea una pagina con la geometría

\end{document}

Si desea elimine el paquete y el comando \layout para su normalidad.

165
166 CAPITULO 9. CREANDO REPORTES

1.3.1 Textos

Lo s textos en KTjrXson muy sencillos y es como escribir en un bloc de notas ya


que no es posible observar como es el diseño o el texto que actualmente se esta
escribiendo. A continuación se presentará el tamaño de letra:

Cuadro 9.7: Tamaño de texto

Tipo de letra
Escribir lOpt llpt 12pt Produce 1
{\tiny Tiny} 5pt 6pt 6pt Tiny

{\scriptsize Script} 7pt 8pt 8pt Script

{\footnotesize Foot} 8pt 9pt lOpt Foot


{\small Small} 9pt lOpt llpt Small
{\normalsize Normal} lOpt llpt 12pt Normal
{\large large} 12pt 12pt 14pt large
{\Large Large} 14pt 14pt 17pt Large
{\LARGE Large} 17pt 17pt 20pt Large
{\huge huge} 20pt 20pt 25pt huge
{\Huge Huge} 25pt 25pt 25pt Huge
Nota: Los 10,11 y 12pt se encuentra en la clase de docu¬
mento \documentclass [a4paper,12pt]{article}
Importante: Las llaves sirven para indicar el límite del
texto a convertir.

Hay algunos comandos que permiten hacer que el texto sea en negrita, itálica
o cualquier otro.

Cuadro 9.8: Estilo de texto

1 Escribir Produce ¡
{\rm Román } Román
{\em Enfático} Enfático
\textbf {Negrita} Negrita
\textit {Itálica} Itálica
{\sf Sans Serif } Sans Serif
\underline {Subrayado} Subrayado

166
167
3. LATEX

Párrafos
Los comandos que permiten crear párrafos son:

Cuadro 9.9: Párrafos

1 Escribir Produce f
\paragraph {Titulo} ... Titulo
\subparagraph {Titulo} ... Titulo

\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amssymb}

\begin{document}
Entrada 1

\section{Hl}
\paragraph{Párrafo 1}
En cada viaje Mr. X sigue siendo un escritor ...
\subparagraph{Sub párrafo 1}
Uno de sus viajes Mr. X tuvo un problema ...
\paragraph{Párrafo 2}
Cada quien entendió a su manera, no obstante ...
\subparagraph{Sub párrafo 2}
Siempre decia que la felicidad ...
\end{document}

1 H1
Párrafo 1 En cada viaje Mr. X sigue siendo un escritor que esta muy
ancioso de seguir escribiendo nuevas novelas que cuentan cada realidad sub¬
jetiva de un hombre quien dio la vida por un momento de felicidad • • •
Genera 1

Sub párrafo 1 Uno de sus viajes Mr. X tuvo un problema con uno
de los marines y es que en cuestión, él nunca prestaba atención a los • • •

Párrafo 2 Cada quien entendió a su manera, no obstante él nunca se daba


por vencido ni aunque derramara una gota de sangre en su boligrafo ■ ■ ■

Sub párrafo 2 Siempre decia que la felicidad es un tiempo muy corto

167
168 CAPITULO 9. CREANDO REPORTES

Alinear texto
Alinear un grupo de textos en ETpXes muy sencillo y fácil, se usa los entornos
flushleft, flushright y center “únicamente solo cambia el texto que se encuentra
dentro del entorno
\begin{} ..\end{}”.

Izquierda Produce

Texto arriba N Texto arriba


N
«6 \begin{flushleft} tí
’G
tí O ..izquierda
u ..izquierda G
+■> V
\end{flushleft} 0
H Texto abajo
Texto abajo

Derecha Produce

Texto arriba n Texto arriba


M
tí \begin{flushright} tí
’O
..derecha ..derecha

G \end{flushright} ü
a Texto abajo
Texto abajo

Centro Produce

Texto arriba Texto arriba


\begin{center}
2
. .centrado V ..centrado
G
\end{center} u
O Texto abajo
Texto abajo

Espacios
Para dejar espacios en ETpXtambién usamos comandos que son sencillos de
memorizar, las medidas aceptadas son: puntos (pt), pulgadas (in), centímetros
(cm), milímetros (mm), (em) y picas (pe)

168
169
3. LATEX

Cuadro 9.10: Espacios

Escribir Información 1
\hfill a El texto a se mueve totalmente hacia la derecha
\vfill b El texto b se mueve en su totalidad hacia abajo
\hspace {0.2in} c El texto c es movido horizontalmente en 0.2in
\vspace {0.2in} d El texto d se mueve vertical(abajo) en 0.2in
\par e El texto e se escribe en una nueva linea

Listas
Las listas en ETjXson de distintas formas: item (itemize),enumeración (enumé¬
rate) y descriptivo (description). Cada una de ellas con sus respectivos diseños
que también son editables los iconos o simbolos.
Para su edición algunos de los simbolos requieren agregar paquetes en ETgX(
vease la figura 9.11):

Figura 9.10: Paquetes importantes

\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,array,ams fonts,latexsym,cancel,amssymb}
\usepackage{textcomp,wasysym} % <-
\let\Square\relax % importante
\usepackage{bbding} % <-

Cuadro 9.11: Símbolos Matemáticos para listas

\triangle A \Box □ \heartsuit


\rightarrowtail >—► \circledcirc ® \circledast ©
\boxtimes O \boxplus ffl \vartriangleright >
\wasytherefore \circleddash 0 \multimap

Nota: si no esta dentro de un entorno matemático usar $... $ (vea la


sección 3.2)

169
170 CAPITULO 9. CREANDO REPORTES

Cuadro 9.12: Símbolos no Matemáticos para listas

\ding {47} \ding {52} ✓ \ding {56} X \ding {60}


\ding {54} X \ding {45} Uta \ding {64} \ding {70} ♦
\ding {72} ★ \ding {73} ☆ \ding {116} ▼ \ding {109} O
\ding {220} \ding {226} 5^ \ding {228} >► \ding {229}

Nota: no requieren de $ para usarlo como texto normal.

Modo normal

\textbf{listas forma item}


listas forma item
\begin{itemize}
\item a y b • ayb
\begin{itemize}
\item sub a y b - sub ayb
\end{itemize}
\item b y c • by c
\end{itemize}
\textbf{listas número} listas número
ifl
\begin{enumérate}

•d \item a y b 1. ayb

u \begin{enumérate}
+■>
a \item sub a y b a) sub ayb
tí \item sub c y d
b) sub c y d
\end{enumérate}
\item b y c
2. by c
\end{enumérate}
\textbf{listas descriptivo}
\begin{description}
listas descriptivo
\item[Flor] Parte de planta
\item[Ave] Animal vertebrado
Flor Parte de planta
\end{description}
Ave Animal vertebrado

170
171
3. LATEX

Cambiando símbolos, si quieres usar [label=] debes primero agregar este


paquete
\usepackage{enumitem} donde se encuetra tus paquetes(ver figura 9.11)

\textbf{listas forma Ítem} listas forma ítem


\begin{itemize}
\item[$\checkmark$] a y b ✓ ayb
\item[$\bigodot$] b y c

\end{itemize}
O by c
Entrada 6

C0
usando \textbf {label} es usando label
u
fH
\begin{itemize}[label=$\bigstar$] 3
★ ayb
\item a y b t¡3
\begin{enumérate}
1. uno
\item uno
\item dos 2. dos
\end{enumérate}
\item c y d ★ cy d

171
172 CAPITULO 9. CREANDO REPORTES

.
2 3.2 Ecuaciones

Figura 9.11: Paquetes importantes

\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,array,ams fonts,latexsym,cancel,amssymb}

Lo enriquecedor y maravilloso de ETjrXes la forma como imprime las ecuaciones,


a continuación en la siguiente tabla se muestra algunos símbolos más usados en
ciencias matemáticas

Cuadro 9.13: Algunos símbolos matemáticos

\alpha a \epsilon e \leq < \cong = \pi vr


\beta P \theta 9 \geq > \neq \phi 0
\ gamma 7 \lambda A \in G \& k, \delta ó
\delta 6 \mu /i \not \in ^ \$ $ \ Omega fí
\sigma a \pm ± \not = ^ \% % \therefore

Nota: Para escribir un símbolo como texto use el dolar, ejemplo $\alpha$

Cuadro 9.14: Funciones y Operadores

\sigma A{2} a1 \ln _{b}{a} lrift a


b
3 2_{ 2 } 322 \dfrac {b}{a}
CL
b
\sum _{b}A{a} n_{i} ni \tfrac {b}{a} a
\sqrt [n]{12} \/l2 \lim _{a \rightarrow b} lím

\int _{b}A{a} 2x
/> \iint __{b}A{a} 2x U>
\prod _bAa n;;

172
3. LATEX
173

Cuadro 9.15: Sombreros Matemáticos

\dot {a} ó \check {c} c \tilde {d} d \vec {d} d


\ddot { b} b \grave {s} s \breve {c} c \widehat {ab} ab
\hat {\beta } /3 \acute {d} d \bar {d} d \widetilde {ab} ab

Nota: Para mejorar el estilo, usar $\displaystyle \dot{a} $ .


El espacio en modo matemático es $ \hat {a} \; \; \bar {b} $ y genera a b

Por ejemplo a y el ¡3

Por ejemplo $\alpha$ y el $\beta$ En


i=i xi
\[ X =
n
\bar{x}=\dfrae{\sum_{i=l}A{n}x_i}{n}
<S también se usa
u
u
\] a
también se usa
V
Ü
$$\sum_{b}A{a} n_{i}$$
b
mejora el diseño con displaystyle
$\displaystyle\lim_{a \rightarrow b}$ mejora el diseño con dis¬
playstyle lím
a—>6

Ecuaciones alineadas cortas


Usamos el entorno de align para alinear ecuaciones matemáticas. Cuando usa
\begin{align*} . . . \end{align*} con asterisco estará omitiendo referencias.
Para usar el texto en negrita usar \pmb {}

He aquí un texto que bien pudo ser un párrafo ...


Entrada 8

\begin{align*}
\pmb{\hat{\beta}} &= \dfrae{\pmb{S_{xy}}} {\pmb{S_{xx}}} \\
\pmb {\int_{ 0 } A2 } x/'{2}dx &= \dfrac{8}{3}
\end{align*}
Recuerda que el texto matemático esta en el centro

He aquí un texto que bien pudo ser un párrafo ...


Genera 8

Recuerda que el texto matemático esta en el centro

173
CAPITULO 9. CREANDO REPORTES

También se encuentra el entorno \begin{equation} . . . \end{equation}, ma¬


yormente los uso para ecuaciones fundamentales por el motivo que no acepta &
para su alineación, ademas la ecuación a escribir tiene que ser de una sola linea.
Cuando intentemos usar \begin{align}. . . \end{align} con asteriscos, sig¬
nifica que no hay referencias y no imprimirá el número de la ecuación

primera ecuación con referencia


\begin{equation}
S_{xx} = \sum (x_{i}-\bar{x})A2
\label{eq:sx} %referencia
\end{equation}
Segunda ecuación,por favor no deje lineas vacias
\begin{equation}
% es preferible comentar
Entrada 9

S_{xy} = \sum y_{i}(x_{i} -\bar{x})


% que a dejarlo en blanco
\label{eq:sy}
\end{equation}
Ahora en otro entorno
\begin{align}
\pmb{\hat{\beta}} &= \dfrae{\pmb{S_{xy}}}{\pmb{S_{xx}}}
\tag{véase \eqref{eq:sy} y este \eqref{eq:sx} }\\
\label{eq:lineal}
\end{align}
Para referencias use \ref{eq:sy} al igual que en el otro \ref{eq:sx}.
Pero también tenemos la ecuación general \ref{eq:lineal}

primera ecuación con referencia

Segunda ecuación,por favor no deje líneas vacías


Genera 9

Ahora en otro entorno

(véase (3.2))

(9.1)

Para referencias use 3.2 al igual que en el otro 3.2. Pero también tenemos la
ecuación general 9.1
3. LATEX
175

Ecuaciones alineadas grandes


Cuando estas apunto de escribir expresiones enormes que puede caber en
varias lineas, usas lo siguiente:

Importante: Por favor trate de no dejar lineas vacías (en


blanco). Intente compilar dos veces para que en referencias no
aparezca el símbolo ?

\begin{multline}
Entrada 10

\pmb{f(x)} = axA{10}+32+axA{9}+12x+23+axA{8}+llx+8+axA{7}+
9x+4+axA{6}+8x+9+axA{5}+8x \\
+12+axA{4}+7x+7+axA{3}+45x+3+axA{2}+5x+3+ax
\label{eq:enorme}
\end{multline}
Referencia con \textbf{\ref{eq:enorme}}
Genera 10

f(x) = ax10 + 32 + ax9 + 12x + 23 + ar8 + llr + 8 + aa:7 + 9a: + 4 + ar6 + 8a; + 9 + aa;5 + 8x
+ 12 + axA + 7x + 7 + ax3 + 45r + 3 + ax2 + 5r + 3 + ax (9.2)

Referencia con 9.2

175
176 CAPITULO 9. CREANDO REPORTES

El paquete que permite colorear “\usepackage [xlInames, table] {xcolor}


y este otro “\usepackage {cancel} ” sirve para tachar expresiones.

Cuadro 9.16: Tachado de expresiones y coloreado

1 Escribir Produce 1
\cancel {a} 0
\bcancel {2xA{0}}
\xcancel {0x} M
n

\cancelto {\infty } {3_.{1} } fr

\textcolor {red}{ \int {2} } /2


{Xcolor {blue}3xA {2\alpha } } 3a;2”

Nota 1: Cancel funciona en entorno matemá-


tico(align,multline,equation), caso contrario
usarlo entre $, por ejemplo $\cancel{a}$.
Nota 2: El coloreado de texto es usado en cual¬
quier lugar, no se necesita de entorno matemá¬
tico.

En align se usa & para determinar su alineación y estas lineas \ \ para escribir
en el siguiente renglón (En el ultimo no usarlo)

begin{align}

a &= b & a &= b & a &= b & a &= b \\


a &= b & a &= b & a &= b & a &= b \\
a &= b & a &= b & a &= b & a &= b
end{align}

\begin{align*}
Entrada 11

\cancel{0}+2x &= \cancelto{1}{a} & \xcancel{Ob} &= 3x \\


0 &=\textcolor{blue}{2x} & 0 &= \cancel{\frae{3x}{0}} \\
\bcancel{0} &= 2x & 0 &= 0
\end{align*}
Genera 11

0 + 2 x = 0? M= 3x

0 = 2x

0 = 2x 0 = 0

176
177
3. LATEX

Si quiere hacer pequeños espacios en modo matemático use “\; ”, si duplica,


triplica o quintuplica el espacio aumentará:

$$
X= 2\;\;\;\;\;x+b x = 2 r+b
$$

Mas información
Para las ecuaciones revise este libro en el “capitulo 4” [1] y también este otro
[10]. Ambos libros están disponibles en la web y están muy bien detallados.

177
178 CAPITULO 9. CREANDO REPORTES

3.3.3 Tablas

Mediante librerías

Hay librerías en R que permiten generar tablas como es el caso de kableExtra


y xtable. Desde la consola de Rstudio o cualquier otro IDE, ejecute el siguiente
código:

r
> [Link]("kableExtra")
> [Link]("xtable")
4

Consolé -/ © =□
> [Link]("kableExtra")

© Recuerda que para escribir código


R tienes que obligatoriamente usar
estos símbolos << >>= y al final
@

<<label,echo=F,results='asis' >>=
# aquí escribir todo lo relacionado con R
@

178
179
3. LATEX

Cuadro 9.17: Argumentos en Tabla

te “tab:”

(booleano) si es TRUE imprime el código es¬


crito.

(char) es usado cuando echo=TRUE,


background usar color en hexadecimal como
background = '##ecf5fc'

, (booleano) si es TRUE evalúa la linea que


eval , ...
tiene el codigo

(char) si usas xtable recomiendo usar como


results
argumento 'asis'

I
Nota: TRUE es lo mismo que escribir una T mayúscula.

Cuidado: no confundas el símbolo para comentar, en el


lenguaje R se usa $ y para látex es%.

Una vez instalado, dejamos la consola y nos dedicamos al documento .Rnw y


escribimos lo siguiente como ejemplo:

\documentclass[1lpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{graphicx,wrapfig}
\usepackage{longtable,booktabs,multirow}
\usepackage{array,float,pdflscape,tabú}
\usepackage{threeparttable,threeparttablex}
\usepackage[normalem]{ulem}
\usepackage{xcolor,colortbl,makecell}
o_
O-- — -----■-■ — ■

<<echo=FALSE,warning=FALSE,message=FALSE>>=
library(knitr)
library(kableExtra)
library(xtable)
options([Link] = FALSE)
@
o._
o

<<echo=FALSE>>=

179
180 CAPITULO 9. CREANDO REPORTES

#-
large <- function (x) {
o
pasteO ( ' { \\Large {Wbfseries ' , x, '}} ')
}
#-
nombre <- c ( "el","c2","c3","c4","c5","c6")
tb = [Link](
"x"= sample(1:15,size = 6,replace=T),
"y"= runif(n=6, min = 8, max = 26 ),
"z"= sample(30:65,size = 6,replace = T)
)
rownames(tb) <- nombre
#-
media <- round(mean(tb$x),2)
@
o_
O --------
\begin{document}
\section{Reporte}
Intente crear una tabla desde \textbf{R}

<<tabla,echo=F>>=
kable(tb,format = "látex",booktabs=T,align="c",caption="Tabla A" ,
[Link]=l) %>%
kable_styling(latex_options ="hold_position") %>%
column_spec(1,bold = T,color = "black")
@

Se puede referenciar desde este comando: {\bf Cuadro \ref{tab:tabla} }


\begin{align*}
\bar{x} &=\dfrae{\sum_{i=l}~{n}x_i}{n} \\
\bar{x} &= \Sexpr{media}
\end{align*}

Intentar con la libreria \textbf{xtable} que es mas


configurable
<<echo=F,results='asis'>>=
tablas <- xtable(x = tb,caption = "tabla loca")
print(tablas,[Link] =
@
large
O
<<echo=T,eval=T,background='#ecf5fc' >>=
ce= c(12,2,3)
print (2*ce)
@

\end{document}

180
181
3. LATEX

Una vez escrito todo dale clic al icono del para compilar:

pj látex. Rnw » «(9


ABC
✓ kj - Run -
1 \documentclass{article}
2 \usepackage[utf8]{inputenc)
3 \usepackage[spanish]{babel}
4 \usepackage{amsmath}
5 \usepackage{graphicx,wrapfig}
6 \usepackage{longtable,booktabs,multirow}
7 \usepackage{array,float,pdflscape,tabú}
8 \usepackage{threeparttable,threeparttablex}
9 \usepackage[normalem]{ulem}
10 \usepackage{xcolor, colortbl.,makecell}
11 %=
12 - <<echo=FALSE,warning=FALSE>message=FALSE>>=
13 library(knitr)
14 library(kableExtra)
15 library(xtable)
16 options([Link] = FALSE)
17 @
18 %.
19 - <<echo=FALSE>> =
20- #.
21- large <- function(x){
22 paste0('{\\Large{\\bfseries ',x,'}}')
11:45 Q (Top Level) t R Sweave t

El resultado es:

181
182
CAPÍTULO 9. CREANDO REPORTES

el 4 22.13087 36
c2 10 17.22997 50
c3 7 17.39483 64
c4 6 20.10082 65
c5 9 15.00441 33
c6 7 22.05967 61

Se puede referenciar desde este comando: Cuadro 1

n
x = 7,17

Intentar con la librería xtable que es mas configurable

X y Z
el 4 22.13 36
c2 10 17.23 50
c3 7 17.39 64
c4 6 20.10 65
c5 9 15.00 33
c6 7 22.06 61

Cuadro 2: tabla loca

ce= c(12,2,3)
print(2*ce)

## [1] 24 4 6

182
3. LATEX
183

Manualmente
Se iniciará primero por crear tablas simples y para ellos es necesario incluir
estos paquetes: \usepackage{multicol,multirow,booktabs} en la figura 9.11:
- Agregar paquetes -

\documentclass[llpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{amsmath,array,amsfonts,latexsym,cancel,amssymb}
%-> Listas <-
\usepackage{textcomp,wasysym}
\let\Square\relax
\usepackage{bbding}
\usepackage{enumitem}
%-> Tablas <-
\usepackage[xlInames,table]{xcolor}
\usepackage[capposition=top]{floatrow} % título arriba
\usepackage{multicol,multirow,booktabs}
\usepackage{threeparttable}
\usepackage{longtable}

Por ejemplo la estructura es la siguiente

\begin{table}[!htb]
\centering
\begin{tabular}{|c|c|c|c|}
\hline
& & & \\ \hline
& & & \\ \hline
& & & \\ \hline
& & & \\ \hline
& & & \\ \hline
\end{tabular}
\caption{Título}
\label{ t ab:my_lab}
\end{table}

El entorno principal es \begin{table} [ !htb] . . . \end{table} únicamente


sirve para referencia en la tabla de contenidos dedicado solo a tablas, para mostrar
solo debe escribir debajo de begin{document} el comando \listoftables y
aparecerá el índice délas tablas en orden descendente.
Después se encuentra otro comando \centering, indicando que centrará la
tabla.

183
184 CAPITULO 9. CREANDO REPORTES

el entorno \begin{tabular} { } inicia el cuadro y lo importante es lo que se


encuentra entre las llaves:
“{ |c| }”, éste símbolo “|” crea lineas verticales en columnas. La letra “C”
significa la alineación del contenido y que también es en columnas, preste atención
a la siguiente tabla 9.18:

Cuadro 9.18: Alineación por columnas en tablas

carácter significado
1 alineación hacia la izquierda(left)
c alineación hacia el centro
r alineación hacia la derecha(rigth)
alinea al medio y limita el ancho de toda la columna a
m{8cm}
8cm
alinea tipo párrafo y limita el ancho de toda la columna
p{8cm}
a 8cm

Nota 1: para m y p también puede aplicar otras medidas(vea la


sección 3.1)
Nota 2: si tiene 3 columnas,debes tener {ccc} tres caracteres
de alineación.

El “\hline” crea una linea horizontal por filas.


El sirve para separar celdas.
las dos barras invertidas “\\” significa salto de linea
El “\caption{}” se escribe el título de la tabla
El “\label{tab: }” es la etiqueta que sirve para hacer referencia al usar
\ref{tab:}

Pasaremos al coloreado de las filas y celdas dentro de una tabla.


Preste atención al siguiente ejemplo:

\begin{table}[!htb]
\centering
\rowcolors{3}{DeepSkyBluel}{Coral1 } %fila 3 y 4
\begin{tabular}{|c|c|c|c|}
Entrada 12

\hline
\rowcolor{gray!30} & & TI & \\ \hline
2 & &\cellcolor { green} & \\ \hline
3 & & c & \\ \hline
4 & & d & \\ \hline
\end{tabular}
\caption{Título 2}
\label{ tab:my_lab2}

184
3. LATEX
185

\end{table}

Cuadro 2: Título 2
Genera 12

También se puede pintar por columnas pero requiere crear nuevos comandos
como se muestra a continuación:

\newcolumntype{nombre}{>{}alineación}

Un comando para pintar el texto negrita a blanco:

\newcommand{\nombre}[1]{\textcolor{color}{\textbf{#1}} }

%-> crear comandos <-


\newcolumntype{a}{>{\columncolor{Brownl}}c}
\newcolumntype{e}{>{\columncolor{DarkOrangel}}c}
O,
o
____
\newcommand{\tex}[1]{\textcolor{white}{\textbf{#!}}}

\begin{document}
Entrada 13

\begin{table}[!htb]
\centering
\begin{tabular}{|a|c|e|}
\hline
\tex{Tl} & T2 & \tex{T3} \\ \hline
& & \\
& & \\
& & \\ \hline
\end{tabular}
\caption{Título 3}

185
186 CAPITULO 9. CREANDO REPORTES

\label{ tab:my_lab3}
\end{table}

\end{document}

Cuadro 3: Título 3
Genera 13

para mas información de los colores ingresa en esta url


http: //[Link]/macros/latex/contrib/xcolor/[Link]

Si te parece que no es sencillo crear tablas, en la comunidad de ETj¡}Xhan creado


una extensión que es compatible con Microsoft Excel, llamada “Excel2LaTeX” y
lo puedes descargar desde la siguiente dirección:
[Link]
Esta extensión es compatible con todas las versiones de Excel, así que aquí
tienes otra alternativa para crear tablas.

186
187
3. LATEX

Las tablas anteriores son con estilo, pero que tal si se requiere de tablas tipo
reportes o tesis. Abajo te presento en la tabla 9.19 las lineas que son usadas :

Cuadro 9.19: Lineas en tablas

1 Lineas Dibuja f
\toprule linea superior
\midrule linea central
\cmidrule (Ir){i-j} pequeñas lineas
\bottomrule linea final

El comando \cmidrule (Ir) {i— j } es:

Ir recorta la linea de izquierda(left) a derecha (right)

i-j representa las celdas de una ñla, por ejemplo 2-4

Cuadro 9.20: Unir ñlas y columnas en tablas

1 Comando Descripción i
multirow{m} [vspace] {*} {texto} unir celdas por filas (a la derecha)
multicolumn{n}{1er}{texto} unir celdas por columna(hacia abajo)

Nota 1: m y n son números de celdas.


Nota 2: Los coloreados de filas y columnas no funcionan.

Ejemplo 1

\begin{table}[!htbp]
\centering
\begin{tabular}{ccc}
\toprule
\bf Estado & \bf Label & \bf Valor \\ \midrule
Entrada 14

Mal & ing & 12 \\


Regular & salt & 4 \\
Bueno & run & 6 \\ \midrule
\multicolumn{2}{c}{\bf Total } Se 22 \\ \bottomrule
\end{tabular}
\caption{Caption}
\label{ tab:my_lab4}
\end{table}

187
188 CAPITULO 9. CREANDO REPORTES

Cuadro 4: Caption

Estado Label Valor


Genera 14

Mal ing 12
Regular salt 4
Bueno run 6

Total 22

Intente observar esta imagen

Hombre 10 0
Mujer 0 10

En ^ se ha usado “\multicolumn” une tres columnas.


Para el caso de es “\multirow” por tratarse de la unión de dos filas de la
primera columna.

\begin{table}[!htbp]
\centering
\begin{tabular}{cccc}
\toprule
\multirow{2}[7]{*}{Sexo} &
\multicolumn{3}{c}{ Educación } \\ \cmidrule{2-4} %
Entrada 15

& Primaria & Secundaria & Superior \\ \cmidrule(r){1-1}


\cmidrule(ir){2-2}
\cmidrule(ir){3-3}
\cmidrule(1) {4-4}
Hombre & 1 & 0 & 0 \\
Mujer & 0 & 1 & 0 \\ \bottomrule
\end{tabular}
\caption{Caption}
\label{ tab:my_lab5}

188
189
3. LATEX

\end{table}

Cuadro 5 : Capt ion


Genera 15

Educación

Sexo Primaria Secundaria Superior

Hombre 1 0 0
Mujer 0 1 0

El paquete “threeparttable” permite añadir notas debajo de la tabla:

\begin{table}[!htbp]
\centering
\begin{threeparttable}
\begin{tabular}{ccc}
\toprule
\bf Estado & \bf Label & \bf Valor \\ \midrule
Mal & ing & 12 \\
Entrada 16

Regular & salt & 4 \\


Bueno & run & 6 \\ \midrule
\multicolumn{2}{c}{\bf Total } Se 22 \\ \bottomrule
\end{tabular}
\begin{tablenotes} %-

\item \textbf{Nota: } la tinta se agota


\end{tablenotes} %-
\end{threeparttable}
\caption{Caption}
\label{ tab:my_lab6}
\end{table}

189
190 CAPITULO 9. CREANDO REPORTES

Cuadro 6: Caption

Estado Label Valor


Genera 16

Mal ing 12
Regular salt 4
Bueno run 6

Total 22

Nota: la tinta se agota

Algunos comandos como “\resizebox” permite auto ajustar el ancho de la


tabla, afectando el tamaño de la letra, se vuelve importante cuando tienes una
tabla demasiada ancha:

\begin{table}[]

\resizebox{\textwidth} {'.}{%
\begin{tabular}{ccc}

\end{tabular}
}%

Este otro entorno “\begin{longtable}” que es para la creación de enormes


tablas, como por ejemplo:

\begin{center} %-> centrar tabla


\begin{longtable}{cccc}
\caption{Título de tabla} \\
\toprule

Entrada 17

inicia cabecera
\multirow{2}[7]{*}{Sexo} &
\multicolumn{3}{c}{ Educación } \\ \cmidrule{2-4} %
& Primaria & Secundaria & Superior \\ \cmidrule(r){1-1}
\cmidrule(Ir){2-2}
\cmidrule(Ir){3-3}
\cmidrule(1){4-4}
\endhead
%========== fin cabecera

190
191
3. LATEX

\hline \multicolumn{4}{r}{\textit{Continua en la
siguiente pagina}} w
\endfoot
%========= pie de pagina
\bottomrule
\endlastfoot
\label{tab:my_tab7} %-> referencia
%========= fin pie de pagina
H & 2 & 3 & 4 \\ H & 1 & 3 & 4\\ H & 1 & 3 & 4\\ H & 2 & 3 & 4\\
H & 7 & 3 & 7 \\ H & 1 & 3 & 4\\ H & 2 & 3 & 4\\ M & 2 & 1 & 4\\
H & 2 & 7 & 6\\ M & 4 & 3 & 4\\ H & 4 & 3 & 4\\ M & 2 & 3 & 1\\
M & 2 & 3 & 1\\ M & 1 & 3 & 4\\ H & 2 & 3 & 4\\ M & 2 & 3 & 6\\
M & 2 & 3 & 4\\ M & 2 & 3 & 1\\ H & 4 & 3 & 7\\ M & 2 & 1 & 4\\
H & 6 & 3 & 6\\ M & 4 & 3 & 4\\ M & 2 & 3 & 4\\ M & 4 & 3 & 4\\
M & 2 & 3 & 1\\ H & 1 & 3 & 6\\ M & 2 & 7 & 4\\ M & 2 & 3 & 4\\
H & 2 & 3 & 4\\ H & 2 & 3 & 1\\ M & 2 & 3 & 4\\ M & 2 & 3 & 1\\
M & 6 & 7 & 1\\ M & 4 & 3 & 4\\ M & 2 & 1 & 4\\ M & 2 & 3 & 6\\
H & 2 & 3 & 6\\ M & 2 & 7 & 4\\ M & 2 & 3 & 1\\ M & 2 & 3 & 4\\
H & 6 & 3 & 1\\ M & 2 & 3 & 4\\ M & 2 & 3 & 4\\ M & 2 & 3 & 1\\
H & 2 & 3 & 4\\ M & 2 & 3 & 4\\ M & 2 & 3 & 4\\ M & 2 & 3 & 4\\
\end{longtable}
\end{center}

la tabla \ref{tab:my_tab7} % —> referencia

191
192
CAPITULO 9. CREANDO REPORTES

Cuadro 11: Título de tabla

Educación
Cuadro 11: Título de tabla Sexo Primaria Secundaria Superior

M 2 3 1
Educación
H 1 3 6
Sexo Primaria Secundaria Superior M 2 7 4
H 2 3 4 M 2 3 4
H 1 3 4 H 2 3 4
H 1 3 4 H 2 3 1
H 2 3 4 M 2 3 4
H 7 3 7 M 2 3 1
Genera 17

H 1 3 4 M 6 7 1
H 2 3 4 M 4 3 4
M 2 1 4 M 2 1 4
H 2 7 6 M 2 3 6
M 4 3 4 H 2 3 6
H 4 3 4 M 2 7 4
M 2 3 1 M 2 3 1
M 2 3 1 M 2 3 4
M 1 3 4 H 6 3 1
H 2 3 4 M 2 3 4
M 2 3 6 M 2 3 4
M 2 3 4 M 2 3 1
M 2 3 1 H 2 3 4
H 4 3 7 M 2 3 4
M 2 1 4 M 2 3 4
H 6 3 6 M 2 3 4
M 4 3 4
M 2 3 4
M 4 3 4
Continua en la siguiente pagina de acuerdo a la tabla 11 referenciado

4.3.4 Figuras
Hay librerías como ggplot2,plotrix,RGL y plotly(shiny) que generan un per¬
fecto diseño en R y lo mejor de todo es que se puede exportar a pdf sin perder
calidad alguna. Dentro de estos símbolos se discutirá la dimensiones de los
gráficos « >>=

e VR‘*
> [Link]("ggplot2")
> [Link]("rgl")
> [Link]("plot3D")
#-
> [Link]("plotrix")

-Es recomendable tener la versión de R actualizado

192
3. LATEX
193

Cuadro 9.21: Argumentos en Figuras

Argumento función
Es la etiqueta que sirve para referenciar en
label látex por ejemplo: \ref {f ig:label} ím-
portante “fig:”

(char) Posición de la figura: arriba(t),


[Link] flotante (h), al final(b). Por ejemplo:
[Link]='!htbp'

(numérico) Es el alto de la figura (acep-


[Link] ta valores de 1 hasta 7).Por ejemplo:
[Link]=4

(numérico) Es el ancho de la figura (acep-


[Link] ta valores de 1 hasta 7). Por ejemplo:
[Link]=7

(char) Se reduce o aumenta la imagen en


[Link] forma proporcional (de 1 hasta 100%), por
ejemplo: out. width= ' 4 0% '

(char) Se trata de agregar argumentos extras


out. extra que son compatibles con látex, por ejemplo
rotar una imagen: out. extra= ' angle=4 5'

(char) Aquí ingrese el título de la figura, por


fig. cap
ejemplo: fig. cap= ' Figura N°1. . 1

(numérico) Para usarlo necesitas el paquete


[Link] \usepackage { subf ig} en EHpX. Este argu¬
mento indica el numero de columnas.

(char) Son los sub nombres a cada


figura y si usaste el [Link], ha¬
[Link]
cer que coincidan en n-subnombres
[Link]=c('f1','f2',..n)

Al usar [Link] se debe reducir cada figura, por ejemplo si [Link]=2 que crea
dos columnas y n-filas, usar [Link]="0.48\\textwidth". También debes
saber que todos los argumentos en << »= se escriben en una sola linea.

\usepackage{subfig} %<

193
194
CAPITULO 9. CREANDO REPORTES

o_
o-

«echo=FALSE,warning=FALSE,message=FALSE»=
library(knitr)

library(ggplot2)
library (rgl)
library(plot3D)
library(plotrix)
@
o_
o

Usando estos valores aleatorios como nuestra fuente de datos

«echo=FALSE»=
tb = [Link](
"x"= sort(rnorm(100) ) ,
"y"= rnorm(lOO),
"z"= runif(n=100, min = 1, max = 10)

)
#-
sp <- sample(1:4,size = 20,replace = T)
x3 <- factor(x = sp , levels = c(l:4),
labels = c("Nada Satisfecho",
"Poco Satisfecho",
"Satisfecho",
"Muy Satisfecho"), ordered = T )
#-
lk <- table(x3)
tab <- [Link](lk)
@

O_
Q-

Por ejemplo en ggplot una gráfica de puntos con un ángulo de 90:

«figural,echo=F,[Link]='60%',[Link]='angle=90'»=
Entrada 18

graficol <- ggplot(data = tb, aes(x=y,y=x,fill=z))+


geom_point(size=4)+
theme_bw(base_size = 20)
#
graficol
@

194
3. LATEX
195

00 CD Tf CNJ

N
Genera 18

Por ejemplo en plot3D(rgl) gráfico de dispersión


Entrada 19

«figura2,echo=F,[Link]='60%'»=
scatter3D(x=tb$x,y=tb$y,z=tb$z,cex=l.5,bty="b2",xlab="xl ",
ylab="y",zlab="z: x2",pch=l6,[Link]="# 9 9A69B")
@
Genera 19

Usando nuevamente ggplot, un gráfico pie y para referencias usa


\ref {f ig: f ig3}, no te olvides de “echo=FALSE”

195
196 CAPITULO 9. CREANDO REPORTES

«fig3,[Link]='70%',[Link]='Gráfico Likert',fig,pos='!hbt'»=
grafico3 <- ggplot(tab,aes_(x="",y=tab$Freq,fill=factor(tab$x3)))+
geom_bar(width = l,stat = "identity")+
Entrada 20

coord_polar("y")+
geom_text(aes(label=paste(round(Freq/sum(Freq)*100,1),"%")),
position=position_stack(vjust = 0.5))+
theme_void(base_size = 18)+labs(fill="Indicador")
#
grafico3
@
Genera 20

Indicador
| Nada Satisfecho
■ Poco Satisfecho
Satisfecho
Muy Satisfecho

Gráfico Likert

Por último plotrix con referencia \ref {fig: fig4}, al igual que el anterior
usar echo=FALSE para omitir codigo.

«fig4,[Link]='70%',[Link]='Gráfico Likert',[Link]='!hbt'»=
Entrada 21

color <- c("#526189","#f6f6f6","#d3d9e7","#a3acc5")


#-
[Link](x = tab$Freq,labels=[Link](tab$x3),
col = color,ticks = 30)
@
Genera 21

Figura 2: Gráfico Likert

196
197
3. LATEX

He aquí un ejemplo usando [Link] para unir gráficos en cuatro espacios y en


cuanto a [Link] también debe coincidir con la cantidad de figuras. La librería
ggplot2 permite almacenar el gráfico en objetos, por ende plotrix y plot3D se
crearan manualmente

Importante:
Cuando se agrega argumentos en « »= trate usted de ha¬
cerlo en una sola linea continua, no use saltos de lineas.

« general,echo=F,[Link]="hold", [Link]="0.48\\textwidth",
[Link]="Todos los gráficos",[Link]=c("Uno","Dos",
"Tres","Cuatro"),[Link]=2,[Link]='!hbt' »=
Entrada 22

graficol
grafico3
#-
scatter3D(x=tb$x,y=tb$y,z=tb$z,cex=l.5,bty="b2",xlab="xl",
ylab="y",zlab="z: x2",pch=16,[Link]="#99A69B")
#-
[Link](x = tab$Freq,labels=[Link](tab$x3),
col = color,ticks = 30)
@

197
198 CAPITULO 9. CREANDO REPORTES



•.
• •
•-
. v •• • %• • •*
Indicador
V
• •• ••>
■ Nada Satisfecho
| Poco Satisfecho
Satisfecho
Muy Satisfecho
%• 1
• • • c •»
. ••• .
• •
-2-10 1 2
y
Genera 22

(a) Uno (b) Dos

\ -6
Satisfecho

I
(c) Tres (d) Cuatro

Figura 3: Todos los gráficos

Al igual que las demás, la referencia es \ref {fig:general}

198
199
3. LATEX

5.3.5 Bibliografías
Muchos de los usuarios de Rstudio afirman que no compila la bibliogra¬
fía y que para remediarlo usan otros softwares como es el caso de Texstu-
dio,Texmaker,Kile,TexitEasy y TeXnicCenter .

La bibliografía es almacenada en un fichero con extensión .bib y al ser com¬


pilado con cualquier IDE KTjXgenera otros ficheros como es el caso de .bbl que
seria de gran importancia para el documento.

Existe softwares que permiten escribir la bibliografía, linkografia y otros de


manera sencilla. Esta el Jabref(350MB) que se escribe de manera manual y el
Zotero(85MB) que es más interactivo ya que posee una extensión para navegadores
web como google chrome y mozilla.

Para descargar zotero ingrese a su página web [Link] e


instale, a continuación en su navegador web (mozilla o chrome) instale la extensión.
Aclaración: primero ejecute la aplicación zotero y después la extensión
(ambos son dependientes).

Figura 9.12: La extensión y conexión con zotero

(a) Extensión (b) Software

199
200 CAPITULO 9. CREANDO REPORTES

Al hacer clic en el icono de la extensión zotero en el navegador aparecerá como


se muestra en la figura 9.1 la y al mismo tiempo también en el software figura
9.1 Ib. No todas las páginas web permiten recopilar información zotero y es ahí
donde se tiene que hacerlo manualmente

Figura 9.13: Creando Nueva referencia desde el software Zotero

(a) Selección (b) Agregar


Book
Tools Help Book Section

aA| /g s.\ Case

Book Conference Paper

Book Section Dictionary Entry

Document Document

Journal Article E-mail

Magazine Article Encyclopedia Article

Film
Linkto File...
Forum Post
Store Copy of File...
Hearing
More
Instant Message

Interview

Journal Article

Letter

Magazine Article

Manuscript

Map

Newspaper Article

Patent

Podcast

Presentaron

Una vez que tengamos todas las referencias a nuestra disposición, se procederá
a exportarlo a un fichero con un formato BibLatex

200
3. LATEX
201

Figura 9.14: Exportar desde Zotero

Cuando hace clic derecho en la carpeta o cualquier referencia, aparecerá un


submenu similar al cuadro rojo que esta a la izquierda y en ella has clic en
Export... para que nuevamente aparezca una pequeña ventana donde debes
elegir siempre la codificación en “UTF-8(Unicode)’\
Una vez hecho lo anterior, clic en Ok para guarda el fichero. Intente abrir ese
fichero “bibliografí[Link]” con notepad++ o cualquier otro editor de texto para editar
lo siguiente

_ bibliografí[Link] _
@book{latex_2004_companion,
tifie = {The {LaTeX} Companion},
isbn = {978-0-13-338764-3},
abstract = {This is the digial versión of the printed
pagetotal = {1121},
publisher = {Addison-Wesley Professional},
author = {Mittelbach, Frank and Goossens, Michel and Bra...},
date = {2004-04-23},
langid = {english},
note = {Google-Books-{ID}: {iX}9MAQAAQBAJ},
keywords = {Computers / Electronic Publishing}
}

201
202
CAPITULO 9. CREANDO REPORTES

Tiene que editar latex_2004_companion por otro mas simple, esta etiqueta es
muy importante porque con ese nombre vas a usar en
\citep{latex_2004_companion} (se ve muy enorme). Usaré uno mas corto
látex.2004

Incluir paquete
Incluimos este paquete llamado “biblatex” en el documento actual, es preferi¬
ble que se encuentre entre los últimos paquetes.

\documentclass[llpt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}

\usepackage{csquotes} %-<—<--incluir
\usepackage[style=apa]{biblatex} %<--incluir
%-

De forma predeterminada es el inglés y se necesita modificar el lenguaje al


español

\DeclareLanguageMapping{spanish}{spanish-apa}

Aquí es donde tienes que colocar la dirección del fichero bibliografí[Link] que
habías exportado de zotero.

\addbibresource{bibliografí[Link]}

Intentemos hacer una referencia sin modificar algún elemento:

\begin{document}
Entrada 23

Según \parencite[326-329]{látex.2004} recomienda ...

\printbibliography %<-importante

\end{document}
Genera 23

Según (Mittelbach y col., 2004, pp. 326-329) recomienda

202
3. LATEX
203

Como se observa se usa estas palabras “y col , pp”. Si deseas hacer cambios
en ella entonces presta atención a lo siguiente.

%- modificar-
\setcounter{smartand}{0}
\DefineBibliographyStrings{spanish}{%
andothers = {et al.
pages = {pag. },
Entrada 24

\begin{document}

Según \parencite[326-329]{látex.2004} recomienda ...

\printbibliography %<-importante

\end{document}
Genera 24

Según (Mittelbach et al., 2004, pag. 326-329) recomienda

203
204
CAPITULO 9. CREANDO REPORTES

Aquí la estructura general del fichero [Link]

\documentclass[ a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{graphicx,wrapfig}
\usepackage{microtype,float}
\usepackage[xllnames,table]{xcolor}
\usepackage{colortbl,makecell}

%-> entorno matemático


\usepackage{amsmath,amssymb,array,amsfonts,latexsym,amssymb}
\usepackage{cancel} % tachado de expresiones
\usepackage{textcomp,wasysym,longtable}
\let\Square\relax % importante
\usepackage{bbding}
\usepackage{pdflscape,tabú}

%-> entorno tablas


\usepackage{threeparttable,threeparttablex}
\usepackage{multicol,multirow,booktabs}
\usepackage[capposition=top]{floatrow} % título arriba
\usepackage{multicol,multirow,booktabs}
\usepackage{threeparttable}
\usepackage{longtable}
o,___ _ _ __
o

\usepackage{csquotes}
\usepackage[style=apa]{biblatex}
\DeclareLanguageMapping{spanish}{spanish-apa}
\addbibresource{bibliografí[Link]} %<- dirección fichero bi
%-modificar-
\setcounter{smartand}{0}
\DefineBibliographyStrings{spanish}{%
andothers = {et al.
pages = {pag. },
}
%-> vínculos
\usepackage{hyperre f}

%-> crear comandos <-


\newcolumntype{a}{>{\columncolor{Brownl}}c}
\newcolumntype{e}{>{\columncolor{DarkOrangel}}c}

204
205
3. LATEX

\newcommand{\tex}[1]{\textcolor{white}{\textbf{#1}}}

Q._
o-

\title{Titulo del articulo}


\author{el autor}
\date{}% fecha formato: dia/mes/año
Q._
o-

% —> R librerías
<<echo=F,warning=FALSE,message=FALSE>>=
library(knitr)
library(kableExtra)
library(xtable)
options([Link] = FALSE)
library(ggplot2)
library(plotrix)
@

\begin{document}
\frontmatter

\maketitle
\tableofcontents

\mainmatt e r
%====================== de aquí inicia
\section{H1}
\subsection{H2}
\subsubsection{H3}

%====================== aquí termina


\begin{appendix}
\listoffigures
\listoftables
\end{appendix}

\nocite{*} % imprime todo el contenido de .bib

205
206 CAPITULO 9. CREANDO REPORTES

\printbibliography[
heading=bibintoc,
title={Bibliografía}
]
\end{document}

206
o
h-5

£
H
'M

Oh

<
O

Referencias

1.1 Bibliografía
[1] Walter Mora F Alexánder Borbón A. Edición de textos científicos con LaTeX.
Composición, gráficos, diseño editorial y presentaciones beamer. 2nda. Revis¬
ta digital Matemática Educación e Internet, 2017. ISBN: 978-9977-66-227-5.
url: [Link]

[2] Winston Chang. R Graphics Cookbook: Practical Recipes for Visualizing Data.
Google-Books-ID: fxL4tu5bzAAC. .°’Reilly Media, Inc.", 6 de dic. de 2012.
414 págs. ISBN: 978-1-4493-6310-9.
[3] Dilip Datta. LaTeX in 24 Hours: A Practical Guidefor Scientific Writing. Sprin-
ger International Publishing, 2017. isbn: 978-3-319-47830-2. doi: 10.
1007/978-3-319-47831-9. URL: [Link]
9783319478302.
[4] Colin Gillespie y Robin Lovelace. EJficient R Programming: A Practical Guide
to Smarter Programming. Google-Books-ID: 8kWvDQAAQBAJ. .°’Reilly Media,
Inc.", 8 de dic. de 2016. 220 págs. ISBN: 978-1-4919-5075-3.
[5] Garrett Grolemund. Hands-On Programming with R: Write Your Own Fun-
ctions and Simulations. Google-Books-ID: S04BBAAAQBAJ. .°’Reilly Media,
Inc.", 13 de jun. de 2014. 249 págs. ISBN: 978-1-4493-5911-9.
[6] Nicholas J. Horton y Ken Kleinman. Using R and RStudiofor Data Manage¬
ment, StatisticalAnalysis, and Graphics. Google-Books-ID: WlG3BgAAQBAJ.
CRC Press, 10 de mar. de 2015. 280 págs. ISBN: 978-1-4822-3737-5.

207
208 CAPÍTULO 10. REFERENCIAS

[7] Robert Kabacoff. R in Action: Data Analysis and Graphics with R. Google-
Books-ID: aVnanAEACAAJ. Manning, 2015. 579 págs. ISBN: 978-1-61729-
138-8.
[8] Michael Lawrence y John Verzani. Programming Graphical User Interfaces
in R. Google-Books-ID: VeKEDwAAQBAJ. CRC Press, 14 de dic. de 2018.
481 págs. ISBN: 978-1-315-36051-5.
[9] Mark P. J. Van der Loo. Learning RStudiofor R Statistical Computing. Google-
Books-ID: EE8M9HCJok4C. Packt Publishing Ltd, 1 de ene. de 2012. 206 págs
ISBN: 978-1-78216-061-8.

[10] Luis Rández. Introducción a LATEX. Ira. Universidad de Zaragoza, 2019.


u rl : http: / /pcmap. uní zar. es / ~pilar/látex. pdf.
[11] Donato Teutónico. ggplot2 Essentials. Google-Books-ID: zNODCgAAQBAJ.
Packt Publishing Ltd, 25 de jun. de 2015. 234 págs. ISBN: 978-1-78528-755-
8.
[12] John Verzani. Getting Started with RStudio. Google-Books-ID: q95Nyozjda4C.
T’Reilly Media, Inc.", 23 de sep. de 2011. 97 págs. ISBN: 978-1-4493-0903-9.

208
Indice de cuadros

2.1 Nombres de Objetos.10


2.2 Tipo de dato en R.10
2.3 Verificar el objeto.11
2.4 Funciones para crear clase de objetos .12
2.5 Funciones para crear valores.23
2.6 Funciones que permiten agregar objetos al [Link].28

3.1 Símbolos usados para comprobar elementos .40


3.2 Operadores Lógicos.40
3.3 Símbolos usados para comprobar o relacionar elementos.41
3.4 Verificar y Convertir.41

6.1 Extracción y cambios simples de caracteres.64


6.2 Formas en wordcloud.73
6.3 Colores compatibles con plotly.78
6.4 Gráficos para una Variable.82
6.5 Gráficos para dos Variables.86
6.6 Lista de temas para ggplot.97

9.1 Officer funciones.141


9.2 Officer style.142
9.3 Lista de Encabezados.151
9.4 Lista de estilos.151
9.5 Tabla normal.158
9.6 Tabla alineada.158
9.7 Tamaño de texto.166
9.8 Estilo de texto .166
9.9 Párrafos.167
9.10 Espacios.169
9.11 Símbolos Matemáticos para listas.169
9.12 Símbolos no Matemáticos para listas.170
9.13Algunos símbolos matemáticos .172
9.14Funciones y Operadores .172

209
210
ÍNDICE DE CUADROS

9.15Sombreros Matemáticos .173


9.16Tachado de expresiones y coloreado .176
9.17Argumentos en Tabla.179
9.18Alineación por columnas en tablas.184
9.19Lineas en tablas.187
9.20Unir filas y columnas en tablas.187
9.21 Argumentos en Figuras.193

210

También podría gustarte