################################################################################ ### TALLER FUNDAMENTOS DE R ### ### EJERCICIO 2.2: OPERADORES, PAQUETES Y "TASK VIEWS" ### ### ### ### Center for Conservation and Sustainable Development ### ### Missouri Botanical Garden ### ### Website: rbasicsworkshop.weebly.com ### ################################################################################ ## OBJETIVO: ## El objetivo de este ejercicio es practicar los conceptos de "funci?n", ## "argumento" y "operador", así como practicar con operadores y paquetes. 2 + 3 # Esto suma 2 y 3. Note el uso del operador matem?tico '+'. ## TAREA 1: Use los otros operadores algebraicos b?sicos: '-', '*', '/' y '^' ## para restar, multiplicar, etc. los valores 2 y 3. 5+5 sum(2, 3) # Esto tambi?n suma 2 y 3, note aqu? el uso de la funci?n "sum". Sum(2, 3) # El comando anterior le debe dar un error. Esto se debe a que R distingue # min?sculas de may?sculas; En consecuencia, la funci?n de "sum" no es el mismo # Como "Sum", y en este caso 'Sum' no existe. 10-2/8 # Divide 2 en 8,y luego resta el valor de 10. Cuando R se encuentra con # m?ltiples operaciones, R sigue el est?ndar de hacer la divisi?n y # multiplicaci?n antes de la suma o resta. (10-2)/8 # Utilizando par?ntesis se puede especificar el orden en el que las operaciones # deben ocurrir. Las operaciones dentro de par?ntesis se realizan antes de las # operaciones fuera de par?ntesis. En este caso, la sustracci?n se realiza antes # de la divisi?n. ## TAREA 2: ?Cu?l es el resultado de multiplicar 5,6 por 11,7, luego dividir ese ## valor por 3, y sumar 6.6 a ese resultado y finalmente elevar todo al cuadrado? ## Escriba esta operaci?n como una de una sola l?nea de c?digo. ## TAREA 3: ?Cu?l es el resultado de multiplicar 5,6 por 11,7, luego dividir ese ## valor por 3, y finalmente sumar 6.6 al cuadrado? ## Escriba esta operaci?n como una de una sola l?nea de c?digo. c("Inga", "punctata") # Concatena los caracteres (palabras) "Inga" y "punctata" y formar un vector ## TAREA 4: Utilice la funci?n "length" para confirmar la longitud de este vector paste("Inga", "punctata") # pega las palabras "Inga" y "punctata" para formar una sola cadena de caracteres # con dos palabras (longitud = 1). ## TAREA 5: Utilice la funci?n "length" para confirmar la longitud de este vector ## TAREA 6: Utilice la funci?n "pegar" para unir el g?nero y la especie de su ## especie favorita. A continuaci?n, utilice la funci?n "paste" para pegar ## juntos, en este orden, la especie y el g?nero y la familia de su especie ## favorita. ?paste # Abre la ayuda de la funci?n "paste". ## TAREA 7: Use la ayuda para esta funci?n, identifique cu?l es el papel del ## argumento de "sep". ## TAREA 8: ?Este argumento tiene un valor predeterminado? ?Cu?l es ese valor? ## TAREA 9: Use "paste" para unir el g?nero y especie de su especie favorita ## utilizando el car?cter '_' para separar las dos palabras. ?rep # Abre la ayuda para la funci?n "rep". ## TAREA 10: Lea la ayuda de esta funci?n, e identifique sus principales ## argumentos. ## TAREA 11: Ejecute las l?neas 1 a 7 de los ejemplos en la p?gina de ayuda. Qu? ## hace este pedazo de c?digo? rep(x=c("Pouroma", "minor"), times=7) rep(x=c("Pouroma", "minor"), each=7) # Utiliza la funci?n "rep" para repetir la informaci?n en el argumento "x". ## TAREA 12: ?C?mo y por qu? son los resultados de las dos l?neas anteriores son ## diferentes? ## TAREA 13: Cree un vector que contiene "R es incre?ble!" 1000 veces. Si usted ## quiere, utilice la funci?n "rep" para ayudarle a completar esta tarea con ## rapidez. ## TAREA 14: Vuelva a escribir el c?digo anterior de 3 formas diferentes: ## 1. utilizando los nombres de los argumentos en su orden predeterminado ## 2. excluyendo los nombres de los argumentos ## 3. cambiando el orden de los argumentos ## TAREA 15: ?Cu?les son los problemas con la siguiente l?nea de c?digo? Lea el ## error y corrija el c?digo. Rep(cSocratea exorrhiza), Times=7) rnorm(n=50) # Genera un vector que contiene 50 valores al azar de una distribuci?n normal. rnorm(50) # Tambi?n genera un vector que contiene 50 valores aleatorios de una # distribuci?n normal. ## TAREA 16: De acuerdo con la ayuda de la funci?n 'rnorm': ## 1. ?Qu? otros argumentos pertenecen a esta funci?n? ## 2. ?Cu?les son los valores predeterminados para estos argumentos adicionales? ## TAREA 17: Genere un vector de longitud 25 con valores aleatorios a partir de ## una distribuci?n normal con media 50 y desviaci?n est?ndar de 20. plot(x=rnorm(50), y=rnorm(50)) # La funci?n plot se utiliza para hacer muchos tipos de figuras. En este caso, # se utiliza para hacer una gr?fico de dispersi?n. En la figura, dos variables # aleatorias se representan una contra otra. A <- rnorm(n=1000, mean=0, sd=1) B <- rnorm(1000, sd=25, mean=100) # Esto crea dos vectores con valores aleatorios tomados de una distribuci?n # normal. Luego guarda cada vector en objetos denominados A y B. F?jese en # las diferencias en el orden de los argumentos entre las l?neas de c?digo. hist(A, col="lightblue") # Crea un histograma de los valores en el vector A. ## TAREA 18: Usando la ayuda en R, cree un histograma de los valores en el ## vector B, donde: ## 1. los datos se presentan en ~30 barras, ## 2. las barras son de color rojo, y ## 3. el eje X tiene el nombre "valores de azar del vector B". ## TAREA 19: Antes de ejecutar el c?digo, puede usted predecir como los ## resultados de los pr?ximos tres comandos ser?n diferentes? plot(A, B) plot(y=A, x=B) plot(x=B, y=A) A <- 1:20 # Re-reescribe el objeto A con la secuencia: 1, 2, 3, ..., 20. ## TAREA 20: Cree otro objeto de nombre "a" con la misma secuencia, pero esta vez ## use la funci?n 'seq'. ## TAREA 21: Cree un diagrama de dispersi?n en el que se relacionan los valores ## de "A" con los valores de "a" . ## TAREA 22: Use la funci?n "lines" para crear una l?nea de correspondencia 1:1 ## encima del gr?fico de dispersi?n. Para crear esta l?nea, la funci?n ## necesita la coordenadas X y Y de un punto de salida y un punto de llegada ## (origen en las coordenadas 0,0 y final en las coordenadas 20,20). ## TAREA 23: ?Puede usted leer, entender y traducir el siguiente c?digo? pred <- rnorm(250, 40, 10) resp <- 15 + 1.55*pred + rnorm(250, sd=5, mean=0) plot(pred, resp, cex=2, pch=21, col= "grey60", bg="gold") ## TAREA 24: Haga una figura similar a la anterior, pero cambie (1) el tama?o, ## (2) el tipo y (3) el color de los s?mbolos. ## TAREA 25: Si usted calcula el promedio y la desviaci?n est?ndar de los ## valores del vector "pred", qu? espera como resultados? Calcule estos valores ## utilizando las funciones "mean" y "sd" para confirmar o revisar sus ## expectativas. lm(resp ~ pred) ## La funci?n "lm" crea modelos lineales. En este caso, 'lm' est? haciendo una ## regression lineal donde "resp" es una funci?n de "pred". El s?mbolo '~' ## significa generalmente "es una funci?n de" y se utiliza en f?rmulas. summary(object=lm(resp ~ pred)) # La funci?n "summary" crea un resumen de la informaci?n contenida en su # argumento "object". En este caso, proporciona informaci?n sobre la regresi?n # lineal entre "resp" y "pred". ## TAREA 26: Haga un resumen (summary) de un vector de 300 valores aleatorios ## tomados de una distribuci?n normal con una media de -13 y una desviaci?n ## est?ndar de 5. ################################################################################ ### SOLUCIONES PARA TAREAS ##################################################### ################################################################################ ## TAREA 1 ## 2 + 3 2 - 3 2 * 3 2 / 3 2 ^ 3 ## TAREA 2 ## ((5.6 * 11.7)/3 + 6.6)^2 ## TAREA 3 ## (5.6 * 11.7)/3 + 6.6^2 ## TAREA 4 ## length(c("Inga", "punctata")) ## TAREA 5 ## length(paste("Inga", "punctata")) ## TAREA 6 ## paste("Chrotopterus", "auritus") ## TAREA 7 ## # sep: un vector de caracteres para separar los t?rminos. ## TAREA 8 ## # sep = " " ## TAREA 9 ## paste("Chrotopterus", "auritus", sep="_") ## TAREA 10 ## # x, times, length.out, each ## TAREA 11 ## rep(1:4, 2) # Repetir la secuencia 1--4 2 veces rep(1:4, each = 2) # Repetir cada elemento de la secuencia de 1--4 2 veces rep(1:4, c(2,2,2,2)) # Repetir cada elemento de la secuencia de 1--4 2 veces rep(1:4, c(2,1,2,1)) # Repetir el primer y el tercer elemento de la secuencia 2 # veces, y el segundo y cuarto elementos s?lo una vez rep(1:4, each = 2, len = 4) # Repetir cada elemento de la secuencia de 1--4 2 veces, # pero devolver s?lo los 4 primeros elementos del resultado rep(1:4, each = 2, len = 10) # Repetir cada elemento de la secuencia de 1--4 2 veces, # y devolver 10 elementos del resultado rep(1:4, each = 2, times = 3) # Repetir cada elemento de la secuencia 2 veces, # y luego repetir ese resultado 3 veces ## TAREA 12 ## rep(x=c("Pouroma", "minor"), times=7) # Repite el vector 7 veces rep(x=c("Pouroma", "minor"), each=7) # Repetir cada elemento en el vector de 7 veces ## TAREA 13 ## rep(x="R is awesome", times=1000) ## TAREA 14 ## rep(x="R is awesome", times=1000) rep("R is awesome", 1000) rep(times=1000, x="R is awesome") ## TAREA 15 ## # A. La funci?n es "rep" no "Rep" # B. La funci?n "c" no est? seguida de "(" # C. Socratea y exorriza necesitan estar en entre comillas # D. Tiene que haber una coma que separa los valores "Socratea" y "exorrhiza" antes # de concatenarlas rep(c("Socratea", "exorrhiza"), times=7) ## TAREA 16 ## # mean = 0 y sd = 1 ## TAREA 17 ## rnorm(n=25, mean=50, sd=20) ## TAREA 18 ## hist(x=B, breaks=30, col="firebrick1", xlab="Values of random vector B") ## TAREA 19 ## plot(A, B) # A en el eje x, B en el eje y plot(y=A, x=B) # B en el eje x, A en el eje y plot(x=B, y=A) # B en el eje x, A en el eje y ## TAREA 20 ## a <- seq(from=1, to=20, by=1) ## TAREA 21 ## plot(a, A) ## TAREA 22 ## lines(x=c(1,20), y=c(1,20), col="red") ## TAREA 23 ## pred <- rnorm(250, 40, 10) # Crea un vector de 250 valores aleatorios a partir # de una distribuci?n normal con media 40 y # desviaci?n est?ndar 10. Ponga ese vector en un # objeto denominado *pred* resp <- 15 + 1.55*pred + rnorm(250, sd=5, mean=0) # 1. Multiplica los valores de objeto "pred" por 1,55 # 2. Al resultado anterior, sumar el valor 15 # 3. Crear un vector de 250 valores aleatorios a # partir de una distribuci?n noormal con media y # desviaci?n est?ndar 5 y 0 # 4. Suma los vectores creados en los pasos 2 y 3 plot(pred, resp, cex=2, pch=21, col= "grey60", bg="gold") # Colocar los valores en el objeto "resp" contra aquellos # en el objeto "pred". el tama?o del s?mbolo es 2. El # S?mbolo es de tipo es 21. El color del borde del # s?mbolo es "grey60". Y el color de fondo del # s?mbolo es oro. ## TAREA 24 ## plot(pred, resp, cex=4, pch=22, col= "white", bg="darkolivegreen") ## TAREA 25 ## # Se podr?a esperar que sean cerca de 40 y 10 para la media y la sd, respectivamente mean(pred) sd(pred) ## TAREA 26 ## summary(rnorm(n=300, mean=-13, sd=5))