################################################################################ ### TALLER FUNDAMENTOS DE R ### ### EJERCICIO 9.5: CONTROL DE FLUJO ### ### ### ### Center for Conservation and Sustainable Development ### ### Missouri Botanical Garden ### ### Website: rbasicsworkshop.weebly.com ### ################################################################################ ## OBJETIVO: ## Practicar el uso de de bucles ("loops") # el código a continuación simula el rango geogrófico de una especie en EEUU # continental. En particular, simula el área de ocupancia de una especie # utilizando un método similar al empleado en: Sheth et al. 2012. Understanding # bias in geographic range size estimates. Global Ecology and Biogeography 21: # 732-–742. ## Defina su directorio de trabajo ## TAREA 1 ## ## Cree un marco de datos llamado "región", usando la función *read.table* ## para leer el archivo "Region.txt", disponible en la página del taller. ## Este archivo contiene las coordenadas de parcelas de árboles a través de ## EEUU (ver http://fia.fs.fed.us/). Note que "Region.txt" tiene valores ## separados por comas y títulos de columnas. # Un gráfico de las coordenadas de las parcelas plot(region[,c(2,1)], asp=1, cex=0.25, pch=16, col="darkolivegreen2") # Utilizaremos sólo los datos en la parte este de EEUU, así que eliminamos los datos # de las parcelas al occidente de la longitud -85: region <- region[-which(region$LONG<=-85),] ## TAREA 2 ## ## Haga un nuevo mapa con este subconjunto de datos # El siguiente código selecciona la primera parcela del rango geográfico de la especie # y la grafica: geo.range <- sample(1:nrow(region), 1) points(region[geo.range, c(2, 1)], cex=0.25, pch=16, col="red") # el siguiente código define el tamaño del rango geográfico en términos del número de # parcelas ocupadas por una especie AOO <- 1000 # El código a continuación expande el rango geográfico hasta alcanzar un tamaño predeterminado: for(i in 1:AOO) { print(i) # Seleciona el siguiente parcela de partida dentro del rango geográfico de la especie source.point <- sample(1:length(geo.range), 1) # Calcula las distancias de la parcela de partida a todas la parcelas no ocupadas dif.lon <- region[geo.range[source.point], 2] - region[-geo.range, 2] dif.lat <- region[geo.range[source.point], 1] - region[-geo.range, 1] geodistance <- sqrt(dif.lon^2 + dif.lat^2) # Selecciona la parcela no ocupada más cercana a la parcela de partida o <- order(geodistance) areas.disponibles <- c(1:nrow(region))[-geo.range] new.cell <- areas.disponibles[o[1]] geo.range <- append(geo.range, new.cell, after=length(geo.range)) ## TAREA 3 ## ## Adicione una línea de código que utilice la función *points* para graficar ## la epansión del rango geográfico que está simulando } # Examine el mapa del rango de distribución de la especies en mayor detalle: plot(region[,c(2,1)], asp=1, cex=0.75, pch=16, col="darkolivegreen2", xlim=range(region[geo.range, 2]), ylim=range(region[geo.range, 1])) points(region[geo.range, c(2, 1)], cex=0.75, pch=16, col="red") ################################################################################ ### RESPUESTAS ################################################################# ################################################################################ ## TASK 1 ## region <- read.table(file=file.choose(), header=TRUE, sep=",") ## TASK 2 ## plot(region[,c(2,1)], asp=1, cex=0.25, pch=16, col="darkolivegreen2") ## TASK 3 ## points(region[geo.range, c(2, 1)], cex=0.25, pch=16, col="red")