Está en la página 1de 20

Sesión 2 - MG en R

Dr. Jesús Alberto Díaz Cruz

2022-08-19

En la primer sesión vimos que R maneja diferentes tipos de datos, tales como
FACTOR, INTEGER, NUMERIC, LOGIC, entre otros y cada uno posee características
particulares. Estos datos se pueden organizar de diferentes maneras, las que se
denominan ESTRUCTURAS. Algunas de las estructuras que ya revisamos son:
vectores, matrices, y dataframes. De manera similar a los tipos de datos, las
estructuras poseen características y propiedades particulares.
En la sesión de hoy retomaremos el trabajo con las estrucuturas de datos,
específicamente aquellas relacionadas con las estructuras que junto con los
dataframes se emplean recuerrentemente en los análisis de morfometría geométrica.
Estos son: listas y arreglos(ver Figura 3, Sesión 1). Los arreglos son estructuras de
objetos(datos) que presentan más de dos dimensiones (Figura 1).

Matrices y arreglos, estrucutras de datos adicionales en R


Nuestro primer arreglo (array) tendrá una dimensión de (3,3,2), lo que siginifica que
generaremos dos matrices de 3 filas y 3 columnas.Para crear un arreglo usaremos la
función array().
#primero creamos dos vectores
v1 <- c(5,9,5)
v2 <- c(15,12,10,2,1,1)

#crea un vector de dos matrices y de tres filas con 3 columnas


#con los vectores que fueron creados

mi_primer_arreglo <- array(c(v1,v2), dim = c(3, 3, 2))

#imprime tu arreglo
mi_primer_arreglo

## , , 1
##
## [,1] [,2] [,3]
## [1,] 5 15 2
## [2,] 9 12 1
## [3,] 5 10 1
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 5 15 2
## [2,] 9 12 1
## [3,] 5 10 1

En este momento, esta estructura de datos podría paracer un poco extraña, pero en
realidad es la manera en la que se organizan los landmarks para cada individuo que
analizaremos en MG. Ahora nombraremos las columnas, filas y matrices para darte
una mejor idea.
#anañade nombres a todos los componentes del arreglo
column.nam <-c("coorX", "coorY", "coorZ")
row.nam <-c("landM1", "landM2", "landM3", "landM4")
matrix.nam <- c("indiv1", "indiv2")

#crea el arreglo con nombres


mi_segundo_arreglo <-
array(1:12,
dim = c(4, 3, 2),
dimnames = list(row.nam, column.nam, matrix.nam))

#imprime tu arreglo
mi_segundo_arreglo

## , , indiv1
##
## coorX coorY coorZ
## landM1 1 5 9
## landM2 2 6 10
## landM3 3 7 11
## landM4 4 8 12
##
## , , indiv2
##
## coorX coorY coorZ
## landM1 1 5 9
## landM2 2 6 10
## landM3 3 7 11
## landM4 4 8 12

Analiza los nombres que hemos colocado y verás que este arreglo contiene datos de
dos invividuos, cada uno con cuatro landmarks de tres dimensiones (3D), indicado por
los valores X, Y y Z. Landmarks en 2D tendría únicamente datos para los ejes X y Y
como veremos más adelante.
Ahora, luego de haber creado un segundo arreglo, podemos explorarlo por medio de
funciones.
#ver cómo se componen el arreglo
str(mi_segundo_arreglo)

## int [1:4, 1:3, 1:2] 1 2 3 4 5 6 7 8 9 10 ...


## - attr(*, "dimnames")=List of 3
## ..$ : chr [1:4] "landM1" "landM2" "landM3" "landM4"
## ..$ : chr [1:3] "coorX" "coorY" "coorZ"
## ..$ : chr [1:2] "indiv1" "indiv2"

#ver sus dimensiones


dim(mi_segundo_arreglo)

## [1] 4 3 2

Luego de aplicar esas funciones, tendremos una mejor idea de la organización de


nuestros datos.

Las listas
Una lista es la estructura de datos en R más compleja. Este tipo de estructura admite
múltiples dimensiones así como diferentes tipos de datos. Diferentes objetos con
diferente estructura de datos se pueden organizar en una lista.
#diferentes vectores con diferentes datos
vec_ch <- c("casa", "calle", "vecindario", "delegación")
vec_fac <- as.factor(c("chico", "mediano","grande","grande","grande"))
vec_num <- 1:100

#creamos una matriz


mat.num <- matrix(1:30, byrow = TRUE, nrow = 5, ncol= 6)
#creamos un data frame
dataset <- data.frame(
Persona = c("Juan", "Diana","Maggie"),
Lunes = c(3, 6, 7),
Martes = c(8, 11, 12),
Miercoles = c(13, 16, 17),
Sexo = c("M", "F", "F")
)

#todos los objetos creados serán organizados en una lista


#por medio de la función list()
mi_primer_lista <- list(vec_ch, vec_fac, vec_num, mat.num, dataset)

#explora tu lista
str(mi_primer_lista)

## List of 5
## $ : chr [1:4] "casa" "calle" "vecindario" "delegación"
## $ : Factor w/ 3 levels "chico","grande",..: 1 3 2 2 2
## $ : int [1:100] 1 2 3 4 5 6 7 8 9 10 ...
## $ : int [1:5, 1:6] 1 7 13 19 25 2 8 14 20 26 ...
## $ :'data.frame': 3 obs. of 5 variables:
## ..$ Persona : chr [1:3] "Juan" "Diana" "Maggie"
## ..$ Lunes : num [1:3] 3 6 7
## ..$ Martes : num [1:3] 8 11 12
## ..$ Miercoles: num [1:3] 13 16 17
## ..$ Sexo : chr [1:3] "M" "F" "F"

#imprime tu lista
mi_primer_lista

## [[1]]
## [1] "casa" "calle" "vecindario" "delegación"
##
## [[2]]
## [1] chico mediano grande grande grande
## Levels: chico grande mediano
##
## [[3]]
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18
## [19] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
35 36
## [37] 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
53 54
## [55] 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
71 72
## [73] 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
89 90
## [91] 91 92 93 94 95 96 97 98 99 100
##
## [[4]]
## [,1] [,2] [,3] [,4] [,5] [,6]
## [1,] 1 2 3 4 5 6
## [2,] 7 8 9 10 11 12
## [3,] 13 14 15 16 17 18
## [4,] 19 20 21 22 23 24
## [5,] 25 26 27 28 29 30
##
## [[5]]
## Persona Lunes Martes Miercoles Sexo
## 1 Juan 3 8 13 M
## 2 Diana 6 11 16 F
## 3 Maggie 7 12 17 F

Nuestra primer lista incluye vectores con diferentes tipos de datos, también incluye
una matriz y hasta un dataframe. Asimismo, pudimos haber incluido un arreglo.
Algunos archivos que analizaremos más adelante, principalente los pregardos en
geomorph, vienen organizados en una estructura del tipo lista. En morfometría
geométrica esto es útil porque en una lista podemos incluir los landmarks, el outline
de los especímenes, el sexo, nombre de las especies o los puntos de union entre
landmarks. Estos datos tendrán diferentes estructuras, podremos accesar a ellos
fácilmente y según sus características nos permitirán ejecutar cierto tipo de análisis.

Accesando a lso elementos de una lista


La manera más sencilla de acceder y seleccionar un elemento de una lista es mediante
el operador misceáneo de “$”. Este operador nos permite seleccionar columnas en
dataframes o elementos específicos de una lista.
#Antes de selecionar los elementos de nuestra lista, los nombraremos
usando la funcion names()
names(mi_primer_lista) <-
c(
"vector_caracter",
"vector_factor",
"vector_numerico",
"matriz_dedatos",
"dataset_frame"
)

#verifica que tu matriz ahora incluya los nombres


#observa los nombres de los elementos que posee
str(mi_primer_lista)

## List of 5
## $ vector_caracter: chr [1:4] "casa" "calle" "vecindario" "delegación"
## $ vector_factor : Factor w/ 3 levels "chico","grande",..: 1 3 2 2 2
## $ vector_numerico: int [1:100] 1 2 3 4 5 6 7 8 9 10 ...
## $ matriz_dedatos : int [1:5, 1:6] 1 7 13 19 25 2 8 14 20 26 ...
## $ dataset_frame :'data.frame': 3 obs. of 5 variables:
## ..$ Persona : chr [1:3] "Juan" "Diana" "Maggie"
## ..$ Lunes : num [1:3] 3 6 7
## ..$ Martes : num [1:3] 8 11 12
## ..$ Miercoles: num [1:3] 13 16 17
## ..$ Sexo : chr [1:3] "M" "F" "F"

#selecciona los elementos que te interesen mediante $


mi_primer_lista$dataset_frame

## Persona Lunes Martes Miercoles Sexo


## 1 Juan 3 8 13 M
## 2 Diana 6 11 16 F
## 3 Maggie 7 12 17 F

#que tipo de dato es


class(mi_primer_lista$dataset_frame)

## [1] "data.frame"

#cuál es su estructura
str(mi_primer_lista$dataset_frame)

## 'data.frame': 3 obs. of 5 variables:


## $ Persona : chr "Juan" "Diana" "Maggie"
## $ Lunes : num 3 6 7
## $ Martes : num 8 11 12
## $ Miercoles: num 13 16 17
## $ Sexo : chr "M" "F" "F"

Según la estructura del objeto seleccionado, podrás emplear funciones para conecer
más de él o rectificar su tipo de dato si el análisis que ejecutarás así lo requiere.

Gráficos en R usando base


Hasta ahora no hemos instalado ningún paquete o librería adicional en R. Para la
sección de gráficos, tampoco instalaremos nada adicional, ya que los plots generados
con geomorph usan base de R. Aunque los gráficos no sean tan atractivos como
aquellos que se producen con ggplot, son altamente configurables. Para configurar un
plot en R, es neceario saber qué argumentos podemos incluir y cómo modificarlos. A
grandes rasgos los componentes de un grafico se detallan en la Figura 2
Algunos de los elementos configurables en los plots de R
Considerando los elementos de la Figura 2, comenzaremos a crear y a personalizar
nuestros plots.
#carga una base de datos
data(iris)

#explora sus estructura


str(iris)

## 'data.frame': 150 obs. of 5 variables:


## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1
1 1 1 1 1 1 ...

#explora los valores de una variable con $


iris$Sepal.Width

## [1] 3.5 3.0 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 3.7 3.4 3.0 3.0 4.0 4.4
3.9 3.5
## [19] 3.8 3.8 3.4 3.7 3.6 3.3 3.4 3.0 3.4 3.5 3.4 3.2 3.1 3.4 4.1 4.2
3.1 3.2
## [37] 3.5 3.6 3.0 3.4 3.5 2.3 3.2 3.5 3.8 3.0 3.8 3.2 3.7 3.3 3.2 3.2
3.1 2.3
## [55] 2.8 2.8 3.3 2.4 2.9 2.7 2.0 3.0 2.2 2.9 2.9 3.1 3.0 2.7 2.2 2.5
3.2 2.8
## [73] 2.5 2.8 2.9 3.0 2.8 3.0 2.9 2.6 2.4 2.4 2.7 2.7 3.0 3.4 3.1 2.3
3.0 2.5
## [91] 2.6 3.0 2.6 2.3 2.7 3.0 2.9 2.9 2.5 2.8 3.3 2.7 3.0 2.9 3.0 3.0
2.5 2.9
## [109] 2.5 3.6 3.2 2.7 3.0 2.5 2.8 3.2 3.0 3.8 2.6 2.2 3.2 2.8 2.8 2.7
3.3 3.2
## [127] 2.8 3.0 2.8 3.0 2.8 3.8 2.8 2.8 2.6 3.0 3.4 3.1 3.0 3.1 3.1 3.1
2.7 3.2
## [145] 3.3 3.0 2.5 3.0 3.4 3.0

#grafica anchura del sépado contra la longitud del sépalo


plot(iris$Sepal.Width, iris$Sepal.Length)

El gráfico se ha creado de manera rápida y sencilla. Sin embargo, es poco informativo


de momento, ya que tenemos datos de tres especies y no podemos ver cómo es ques
estas se asocian en el plot. Además vemos que en el eje de las ordenadas (Y) y de las
abscisas (X) mantienen el nombre de las variables de nuestro dataframe y que el plot
ni siquiera tiene un título. Comenzaremos por agregar estos últimos elementos.
plot(
iris$Sepal.Width,
iris$Sepal.Length,
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
main = expression('Proporciones en especies del género '*italic(Iris)*'
') # título del plot
)

A este plot le hemos agregado diversos títulos, inclusive texto en cursiva, pero sigue
sin mostrarnos la relación de los punto sentre las diferentes especies. Para
complementar esto, le daremos colores a los puntos.
plot(
iris$Sepal.Width,
iris$Sepal.Length,
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
col = iris$Species, #colores de los puntos segú esta variable
main = expression('Proporciones en spp del género '*italic(Iris)*' ') #
título
)
Darle colores a los punto es útil. Si observas el gráfico puedes ver que hay un grupo
que se separa más de los otros dos, pero no sabemos quien es ese grupo. Para arreglar
eso, agregaremos etiquetas a los puntos.
plot(
iris$Sepal.Width,
iris$Sepal.Length,
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
col = iris$Species, #colores de los puntos segú esta variable
main = expression('Proporciones en spp del género '*italic(Iris)*' ') #
título
)

#coloca etiquetas a los puntos


text(iris$Sepal.Width, iris$Sepal.Length, labels= row.names(iris),
cex=0.5, pos=2, col="red")
Aunque ya
agregamos las etiquetas, estas tampoco son útilies en este ejercicio ya que deben de
tener un ID único por cada fila. Lo que haremos ahora es cambiar el tipo de puntos
que nos muestra, sus colores y agregar un cuadro de leyendas. primero, cambiaremos
los puntos, por default R no ha graficado con los círculos y lo que colorea de ellos es el
contorno. Para ver las opciones que tenemos en ayuda, escribe help(plot) y ejecuta
#help(plot)

En Rstudio, en la sección de ayuda, explora las opciones que tienes para editar el plot.
En estos momentos lo que nos interesa es una opción llamada pch, que nos presenta
los diferenntes simbolos que pueden adquirir nuesrto plot Figura 3.

Algunos de los elementos configurables en los plots de R

Algunas de las opciones que tenemos son:


• pch = 19: círculo sólido
• pch = 20: bullet (círuclo sódilo 2/3 el tamaño de 19),
• pch = 21: círculo relleno,
• pch = 22: cuadrado relleno,
• pch = 23: diamante relleno,
• pch = 24: triángulo relleno puta arriba,
• pch = 25: triángulo relleno punta abajo.
Ahora ya podemos cambiar los círculos de nuestro plot por aquellos símbolos que nos
parezcan mejor.
plot(
iris$Sepal.Width,
iris$Sepal.Length,
pch = 19, #el tipo de pinto del plot
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
col = iris$Species, #colores de los puntos según esta variable
main = expression('Proporciones en spp del género '*italic(Iris)*' ') #
título
)

Tanto los símbolos como los colores del plot se pueden cambiar según la especie o
grupos que tengamos. Antes de hacer esto, debemos de asegurarnos que la variable
que define a las especies es del tipo numérico.
sp <- iris$Species

class(sp)

## [1] "factor"

sp <- as.numeric(sp)

#graficamos
plot(
iris$Sepal.Width,
iris$Sepal.Length,
pch = sp, #el tipo de punto del plot por sp
col = sp, #colores de los puntos según esta variable
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
main = expression('Proporciones en spp del género '*italic(Iris)*' ') #
título
)

En en el ejemplo anterior, los símbolos y los colores se asignaron de manera


automática pero también los puedes asignar de forma manual. En classroom les
compartiré un archivo con el nombre de los colores que pueden emplear en R base. R
acepta colores en formato hexadecimal, por lo que pueden usar esta herramienta
online llamada Color-hex o instalar librerías con paletas preconfiguradas de colores
como RColorBrewer.
plot(iris$Sepal.Width,iris$Sepal.Length,
pch = c(15, 16, 17)[as.numeric(iris$Species)],#el tipo de pinto del
plot
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
col = c("red", "green","blue")[as.numeric(iris$Species)], #colores de
los puntos segú esta variable
main = expression('Proporciones en spp del género '*italic(Iris)*' ') #
título
)

Aunque el
gráfico anterior no se ve mal, este aún se puede mejorar modificando los colores,
agregando un cuadro con la leyendas y modificando el tamaño de las letras los ejes,
sus títulos y del título principal.
plot(iris$Sepal.Width,iris$Sepal.Length,
#el tipo de símbolo del plot
pch = c(18, 16, 17)[as.numeric(iris$Species)],
cex.lab = 1.1, #tamaño de letra del título de los ejes
cex.axis = 0.8, #tamaño de los valores en los ejes
cex.main = 1.3,
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
#colores de los puntos según esta variable
col = c("slateblue4", "violetred","tomato1")[as.numeric(iris$Species)],
# título del gráfico
main = expression('Proporciones en spp del género '*italic(Iris)*' '),

#adicionamos la leyendas
legend("topleft", # posición de la legenda
levels(iris$Species), # niveles de especies/poblaciones(Factor)
pch = c(18, 16, 17), # tipo de símbolo
col = c("slateblue4", "violetred","tomato1"), # colores de la especies
cex = 0.72 #tamaño de letra en el cuadro de leyenda
)

# Colocar dos
o más graficos en uno solo
En el caso de que tengamos múltiples gráfico y querramos generar únicamente una
imagen podermos recurrir a la función par(). Esta función nos permitirá crear
gráficos según la cantidad de filas y columnas que le indiquemos.
#crea un espacio para gráficos de una fila y dos columnas
par(mfrow = c(1, 2))

#creas el plot 1
plot(iris$Sepal.Width,iris$Sepal.Length,
#el tipo de símbolo del plot
pch = c(18, 16, 17)[as.numeric(iris$Species)],
cex.lab = 0.9, #tamaño de letra del título de los ejes
cex.axis = 0.65, #tamaño de los valores en los ejes
cex.main = 1.3,
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
xlim=c(1.2,4.6), #expansión del exe x
#colores de los puntos según esta variable
col = c("slateblue4", "violetred","tomato1")[as.numeric(iris$Species)],
# título del gráfico
#main = expression('Proporciones en spp del género '*italic(Iris)*' '),
)

#adicionamos la leyendas
legend("topleft", # posición de la legenda
levels(iris$Species), # niveles de especies/poblaciones(Factor)
pch = c(18, 16, 17), # tipo de símbolo
col = c("slateblue4", "violetred","tomato1"), # colores de la especies
cex = 0.68 #tamaño de letra en el cuadro de leyenda
)

#creas el plot 2

plot(iris$Sepal.Length,iris$Petal.Length,
#el tipo de símbolo del plot
pch = c(18, 16, 17)[as.numeric(iris$Species)],
cex.lab = 0.9, #tamaño de letra del título de los ejes
cex.axis = 0.65, #tamaño de los valores en los ejes
cex.main = 1.3,
xlab = "Longitud del Sépado", #título eje de las X
ylab = "Longitud del Pétalo", #título eje de las Y
#colores de los puntos según esta variable
col = c("slateblue4", "violetred","tomato1")[as.numeric(iris$Species)],
# título del gráfico
#main = expression('Proporciones en spp del género '*italic(Iris)*' '),

#adicionamos la leyendas
legend("bottomright", # posición de la legenda
levels(iris$Species), # niveles de especies/poblaciones(Factor)
pch = c(18, 16, 17), # tipo de símbolo
col = c("slateblue4", "violetred","tomato1"), # colores de la especies
cex = 0.68 #tamaño de letra en el cuadro de leyenda
)

#Un título para los gráficos

mtext(expression('Proporciones entre pétalos y sépalos en especies de


'*italic(Iris)*''),
side = 3,
line = -2.2,
outer = TRUE,
cex = 1.2
)
Si ya estamos conformes con los resultados y apariencia de nuestros gráficos,
pasaremos a exportarlos. R tiene múltiples opciones para exportar los plots. Esos
pueden ser en formato de imagen, como jpg, png, tiff, o bien, como archivos pdf. Para
exportar un archivo, lo primero que se tiene que hacer es abrir la secuenca de
comandos para exportar, luego se coloca el codigo del gráfico y finalmente se cierra la
orden que exporta.
#Guardaremos en JPG

#png("Proporciones en Iris.png", width = 1600, height = 1000, res = 200)

#COLOCAS EL PLOT O LOS PLOTS QUE DESEES GUARDAR


par(mfrow = c(1, 2))

#creas el plot 1
#plot(iris$Sepal.Width,iris$Sepal.Length,
#el tipo de símbolo del plot
pch = c(18, 16, 17)[as.numeric(iris$Species)],
cex.lab = 0.9, #tamaño de letra del título de los ejes
cex.axis = 0.65, #tamaño de los valores en los ejes
cex.main = 1.3,
xlab = "Anchura del Sépado", #título eje de las X
ylab = "Longitud del Sépalo", #título eje de las Y
xlim=c(1.2,4.6), #expansión del exe x
#colores de los puntos según esta variable
col = c("slateblue4", "violetred","tomato1")[as.numeric(iris$Species)],
# título del gráfico
#main = expression('Proporciones en spp del género '*italic(Iris)*' '),

#adicionamos la leyendas
legend("topleft", # posición de la legenda
levels(iris$Species), # niveles de especies/poblaciones(Factor)
pch = c(18, 16, 17), # tipo de símbolo
col = c("slateblue4", "violetred","tomato1"), # colores de la
especies
cex = 0.68 #tamaño de letra en el cuadro de leyenda
)

#creas el plot 2
plot(iris$Sepal.Length,iris$Petal.Length,
#el tipo de símbolo del plot
pch = c(18, 16, 17)[as.numeric(iris$Species)],
cex.lab = 0.9, #tamaño de letra del título de los ejes
cex.axis = 0.65, #tamaño de los valores en los ejes
cex.main = 1.3,
xlab = "Longitud del Sépado", #título eje de las X
ylab = "Longitud del Pétalo", #título eje de las Y
#colores de los puntos según esta variable
col = c("slateblue4",
"violetred","tomato1")[as.numeric(iris$Species)], # título del gráfico
#main = expression('Proporciones en spp del género '*italic(Iris)*'
'),

#adicionamos la leyendas
legend("bottomright", # posición de la legenda
levels(iris$Species), # niveles de especies/poblaciones(Factor)
pch = c(18, 16, 17), # tipo de símbolo
col = c("slateblue4", "violetred","tomato1"), # colores de la
especies
cex = 0.68 #tamaño de letra en el cuadro de leyenda
)

#Un título para los gráficos

mtext(expression('Proporciones entre pétalos y sépalos en especies de


'*italic(Iris)*''),
side = 3,
line = -2.2,
outer = TRUE,
cex = 1.2
)

#dev.off()

El código de arrba nos generará el siguiente gráfico.

Algunos de los elementos configurables en los plots de R


Para guardar como pdf al inicio del código del gráfico tienes que añadir
pdf("Proporciones en Iris.pdf")

dev.off()

R mantendrá en memoria la organización de los plots que le ordenaste previamente,


para regresar alas configuraciones de plot normal escribe:
par(mfrow = c(1, 1))

#Si deseas pedir ayuda de alguna función en particular


?mtext

Estadísticos sensillo - Regresión lineal


En seguida repetiremos uno de los gráficos previos y aplicaremosun estadístico
sencillo. Para la formulación de modelos recurriremos al símbolo ~, como se muestra
en el siguiente ejemplo.
plot(iris$Sepal.Length,iris$Sepal.Width,
#el tipo de símbolo del plot
pch = c(18, 16, 17)[as.numeric(iris$Species)],
cex.lab = 0.9, #tamaño de letra del título de los ejes
cex.axis = 0.65, #tamaño de los valores en los ejes
cex.main = 1.3,
xlab = "Longitud del Sépado", #título eje de las X
ylab = "Longitud del Pétalo", #título eje de las Y
#colores de los puntos según esta variable
col = c("slateblue4",
"violetred","tomato1")[as.numeric(iris$Species)],
# título del gráfico
main = expression('Proporciones en spp del género '*italic(Iris)*'
')
)

#ejecutamos una regresión lineal


fit <- lm (iris$Sepal.Length ~ iris$Sepal.Width, data = iris)
abline(fit, lty = "dashed")

#fit
#plot(fit)

Determinar el directorio de traabajo.

También podría gustarte