Ejercicios

Sesión 1: Operadores y operaciones básicas

1- En un experimento de valor de cultivo y uso (VCU) en el cultivo de maíz, las parcelas están constituidas por dos líneas de cuatro metros, espaciadas 0,60 m, totalizando 6 plantas por línea. Las alturas de las plantas fueron respectivamente (en metros): 1,45; 1,73; 1,98; 2,10; 2,03; 1,65; 2,15; 1,63; 1,53; 1,98; 2,05; 1,52.

a)Crea un vector altura con los valores anteriores

b)Calcula la altura media

c)Calcula la varianza de las alturas

Respuestas:

Para visualizar la respuesta basta mover el cursor encima del “¡Alerta de spoiler!”

b)1.816667

c)0.06540606

2- En la asignatura de Genética se evaluaron altura y peso de 10 alumnos, siendo 5 chicas y 5 chicos. Mira la tabla abajo con los respectivos valores:

Nombre Peso (kg) Altura (m)
María José 72 1,65
Mariana 57 1,68
Fernanda 49 1,53
Jessica 62 1,7
Carolina 57 1,52
Pablo 90 1,82
Marcos 53 1,63
Juan Pablo 76 1,78
Geraldo 63 1,72
Pedro 92 1,98

a)Calcula el IMC de cada alumno, según la fórmula: \(IMC = \frac{peso}{altura^2}\)

b)Calcula el IMC medio de la clase

c)Calcula la varianza del IMC

d)Calcula la desviación estándar del IMC

Respuestas:

a)26.44628 20.19558 20.93212 21.45329 24.67105 27.17063 19.94806 23.98687 21.29529 23.46699

b)22.95662

c)6.665578

d)2.581778

3 - Resuelve la ecuación: \(2x^2 + 8x + 6 = 0\), utilizando la fórmula de Bhaskara. Recordando que: \(x = \frac{-b\pm\sqrt{\Delta}}{2a}\); \(\Delta=b^2 - 4ac\)

Respuesta:

-3 -1

Sesión 2: Clases de objetos

1 - Carga el conjunto de datos llamado “mtcars” (attach(mtcars)).

a)Verifica la clase del objeto “mtcars”

b)Verifica la clase de las columnas “hp” y “cyl”

c)Verifica la clase del nombre de los coches. (rownames)

Respuestas:

a)“data.frame””

b)“numeric” “numeric”

c)“character”

2 - Utilizando el mismo conjunto de datos del ejercicio anterior, calcula:

a)La media de la columna “hp”.

b)Modifica la clase de la columna “hp” a factor y calcula la media nuevamente.

c)Compara los resultados obtenidos en las letras a y b, y explica las diferencias entre ellos.

Respuestas:

a)146.6875

b)NA y un warning

3 - Crea un vector de una muestra de la distribución Normal con longitud 3000, media 20 y desviación estándar 5. Antes de crear el vector, utiliza set.seed(123456).

a)¿Cuál es la suma de las observaciones en el vector que son mayores que 30?

b)¿Y la suma de las observaciones menores que la media? OBS: Calcula la media del conjunto de valores que acabas de generar.

c)Excluir la menor observación del vector.

Respuestas:

a)2610.638

b)23976.86

c)solo el “head”: 24.16867 18.61976 18.22499 20.43744 31.26128 24.17230

c)El valor mínimo: 1.170791

4 - En algunas áreas experimentales de soya se identificó la presencia de algunos nematodos.

Área Nematodo Productividad del área (kg/ha)
A1 Meloidogyne incognita 2700
A2 Meloidogyne incognita 2500
A3 Heterodera glycines 2000
A4 NA 3200
A5 Pratylenchus brachyurus 2900
A6 NA 3500
A7 Meloidogyne javanica 2300
A8 NA 3800
  1. Crea un data frame con la información de la tabla anterior
  1. Crea una columna que contenga el municipio donde está ubicada cada área (Piracicaba-SP, Rio Verde-GO, Londrina-PR, Barreiras-BA, Uberaba-MG, Rondonopólis-MT, Vilhena-RO, Gurupi-TO)
  1. Usando codigo de R. ¿Qué tipos de nematodos afectan a las áreas evaluadas?
  1. Usando codigo de R. ¿Qué nematodo tuvo mayor impacto en la productividad? ¿Y el menor impacto?
  1. Usando codigo de R. ¿Es el promedio de productividad de las áreas afectadas por Meloidogyne incognita mayor que el promedio de las áreas afectadas por todos los otros nematodos?

Respuestas:

c)“Heterodera glycines”, “Meloidogyne incognita”, “Meloidogyne javanica”, Pratylenchus brachyurus”

d)Mayor impacto: Heterodera glycines
Menor impacto: Pratylenchus brachyurus

e)Sí. El promedio de productividad de las áreas de M. incognita (2.6 kg/ha) es mayor que el promedio de las áreas afectadas por otros (2.4 kg/ha)

Sesión 3: Estructuras condicionales y de repetición

1 - Crea un objeto “a” que contenga una secuencia de 1 a 5. Usando cualquier estructura de repetición, suma el número 8 a cada uno de los elementos de “a”, hasta que la suma de todos los elementos sea igual o superior a 10000.

Respuestas:

2001 2002 2003 2004 2005

2 - Repite la frase “x tigre(s) triste(s) comieron x platos de trigo”, donde x sea un número entero de tu elección.

Respuestas:

Si la elección del valor fue uno: 1 tigre triste comió 1 plato de trigo.

Si la elección del valor fue dos: 1 tigre triste comió 1 plato de trigo. 2 tigres tristes comieron 2 platos de trigo.

3 - ¡Momento de relajarse! ¿Conoces la famosa canción de The Beatles Hey Jude? Crea un código que repita el patrón musical final cuantas veces quieras.

“Na, na, na, na-na-na na

Na-na-na na, hey Jude”

4 - Utiliza la expresión siguiente para generar promedios de productividad, considerando 50 genotipos de soja, de forma aleatoria:

set.seed(123456)
productividad = rnorm(50, mean = 3500.00, sd = 800)

Supongamos que el promedio nacional de productividad de soja es de 3500.00 kg/ha. Utilizando estructuras condicionales, verifica si los genotipos presentan valores por encima o por debajo de la productividad media nacional, retornando las frases “por encima del promedio” o “por debajo del promedio”, respectivamente.

Respuestas:

[1] “por encima del promedio” “por debajo del promedio” “por debajo del promedio” “por encima del promedio” “por encima del promedio” “por encima del promedio” [7] “por encima del promedio” “por encima del promedio” “por encima del promedio” “por debajo del promedio” “por debajo del promedio” “por debajo del promedio” [13] “por debajo del promedio” “por encima del promedio” “por encima del promedio” “por encima del promedio” “por debajo del promedio” “por encima del promedio” [19] “por encima del promedio” “por encima del promedio” “por debajo del promedio” “por encima del promedio” “por encima del promedio” “por encima del promedio” [25] “por encima del promedio” “por debajo del promedio” “por encima del promedio” “por encima del promedio” “por encima del promedio” “por debajo del promedio” [31] “por debajo del promedio” “por encima del promedio” “por debajo del promedio” “por debajo del promedio” “por debajo del promedio” “por debajo del promedio” [37] “por encima del promedio” “por encima del promedio” “por encima del promedio” “por debajo del promedio” “por debajo del promedio” “por encima del promedio” [43] “por encima del promedio” “por debajo del promedio” “por encima del promedio” “por debajo del promedio” “por debajo del promedio” “por debajo del promedio” [49] “por encima del promedio” “por debajo del promedio”

5 - Usando los siguientes datos:

temperatures <- c(25, 28, 32, 30, 24, 23, 26)
days <- c("Lun", "Mar", "Mie", "Jue", "Vie", "Sab", "Dom")

Cree un código para:

  1. Clasificar temperaturas (Caliente: >=30; Templado: 25-29, Fresco: <25)

  2. Imprimir un reporte diario con “!” para días calientes. Un reporte como:

  • “Hoy es [día] y hay [temperatura]°C. Es un día [clasificación].”
  • “¡Es un día caliente!” (si corresponde)
  1. Generar estadísticas resumen indicando qué días fueron calientes, qué días fueron frescos y la temperatura promedio de los días templados.

Respuestas:

  1. [1] “Hoy es Lun y hay 25°C. Es un día templado.” [1] “Hoy es Mar y hay 28°C. Es un día templado.” [1] “Hoy es Mie y hay 32°C. Es un día caliente.” [1] “Hoy es Jue y hay 30°C. Es un día caliente.” [1] “Hoy es Vie y hay 24°C. Es un día fresco.” [1] “Hoy es Sab y hay 23°C. Es un día fresco.” [1] “Hoy es Dom y hay 26°C. Es un día templado.”

  2. [1] “Hoy es Lun y hay 25°C. Es un día templado.” [1] “Hoy es Mar y hay 28°C. Es un día templado.” [1] “Hoy es Mie y hay 32°C. ¡Es un día caliente!” [1] “Hoy es Jue y hay 30°C. ¡Es un día caliente!” [1] “Hoy es Vie y hay 24°C. Es un día fresco.” [1] “Hoy es Sab y hay 23°C. Es un día fresco.” [1] “Hoy es Dom y hay 26°C. Es un día templado.”

  3. Resumen: Días calientes: 2 Días frescos: Vie, Sab Temperatura promedio días templados: 26.3°C

Sesión 4: Funciones

Utiliza el conjunto de datos disponible abajo para generar promedios de productividad, considerando 25 genotipos de soja evaluados en 15 ambientes, de forma aleatoria:

set.seed(123456)
datos = data.frame(Genotipos = rep(seq(1,25,1), 15), Ambientes = rep(x = seq(1:15), each = 25), rendimiento = rnorm(375, 3000:3500, 800))

Elabora una función para calcular los promedios y el coeficiente de variación (\(CV = \frac{\mu}{\sigma}*100\)) en cada ambiente, y también evaluar la precisión experimental (hasta 20% = alta; entre 20 y 30% = media; por encima de 30% = baja). La función debe retornar los resultados conteniendo la identificación de cada ambiente, los promedios, los CV’s y las precisiones.

Puede que a esta altura del curso ya hayas tenido que lidiar con varias frustraciones: el código no funciona, necesitaste varios intentos hasta que funcionara. Tal vez te sientas cayendo en aquel gráfico de progreso del aprendizaje que mostramos en la presentación teórica. Por eso, colocamos aquí algunos videos motivacionales. Son tres charlas TED excelentes (como suelen ser los TEDs).

Estos dos tienen subtítulos en español. Solo hay que ajustar la configuración:

  • Teach girls bravery, not perfection | Reshma Saujani Especial para mujeres. Habla sobre cómo aprender a programar nos educa para lidiar mejor con nuestras frustraciones y nos desvía de la cultura impuesta de perfección.

  • Mitch Resnick: Let’s teach kids to code El ponente es uno de los desarrolladores del programa Scratch, que consiste en un juego que enseña lógica de programación. El ponente destaca la importancia de aprender algún lenguaje de programación en los días de hoy.

Este solo en inglés:

Extra: Familia de los apply

1 - Utiliza la función siguiente para generar promedios de productividad, considerando 25 genotipos de soja evaluados en 15 ambientes, de forma aleatoria:

set.seed(123456)
datos = data.frame(Genotipos = rep(seq(1,25,1), 15), Ambientes = rep(x = seq(1:15), each = 25), rendimiento = rnorm(375, 3000:3500, 800))

Utilizando funciones de la familia “apply”, obtén los promedios generales de cada genotipo y también de cada ambiente.