## (1 punto) Define una función llamada sumario que, aplicada a un ## vector numérico o a un factor, devuelva la misma información que ## summary añadiendo el tamaño muestral, así: ## > sumario(mtcars$mpg) ## Min. 1st Qu. Median Mean 3rd Qu. Max. n ## 10.40000 15.42500 19.20000 20.09062 22.80000 33.90000 32.00000 ## > sumario(iris$Species) ## setosa versicolor virginica n ## 50 50 50 150 sumario <- function (x) c (summary (x), n = length (x)) ## (1 punto) Genera un fichero PNG con un diagrama que represente ## abscisas = n desde 1 hasta 9 ## ordenadas = tiempo que tarda R en ejecutar el bucle vacío ## for (i in 1:(10^n)) {} png ("ejercicio2.png") abscisas <- 1:9 ordenadas <- sapply (abscisas, function (n) system.time (for (i in 1:(10^n)) {}) ["elapsed"]) plot (abscisas, ordenadas, type="l") dev.off () ## (1 punto) Considera el dataframe iris. Genera un PDF con 150 ## páginas donde en la página i aparezcan ## un rectángulo verde (o de borde verde) de anchura Sepal.Length y altura Sepal.Width ## un rectángulo rojo (o de borde rojo) de anchura Petal.Length y altura Petal.Width ## la palabra virginica, setosa o versicolor según corresponda a Species ## todo ello a partir de la fila i-ésima de iris. pdf ("ejercicio3.pdf") for (i in 1:nrow(iris)) { van <- iris [i, "Sepal.Length"] # verde anchura val <- iris [i, "Sepal.Width"] # verde altura ran <- iris [i, "Petal.Length"] # rojo anchura ral <- iris [i, "Petal.Width"] # rojo altura pal <- iris [i, "Species"] # palabra x <- c (0, 0, van, van, 0) # esquinas del y <- c (0, val, val, 0, 0) # rectángulo verde plot (x, y, type="l", col=3, main=pal) # borde verde rect (0, 0, ran, ral, col=2) # rectángulo rojo } dev.off() ## (2 puntos) En esta carpeta hay datos sobre vuelos en Estados ## Unidos. Hay un fichero por cada año (los que empiezan por 1987 … ## 2008). Implementa un programa en R que cargue en un dataframe los ## primeros mil registros de cada uno de esos ficheros. lista <- lapply (1987:2008, function (año) { nombre <- paste0 (año, ".csv.bz2") servidor <- paste0 ("http://bellman.ciencias.uniovi.es/~carleos/", "master/manadine/curso1/TIplE/ejercicios/datos/vuelos/") download.file (paste0 (servidor, nombre), nombre) read.csv (bzfile (nombre), nrows=1000) }) datos <- do.call (rbind, lista) ## (2 puntos) ¿Cuántas palabras del fichero /usr/share/common-licenses/GPL ## empiezan y terminan con una vocal (a e i o u)? (Pista: scan, grep) palabras <- scan ("/usr/share/common-licenses/GPL", what="") palabras <- gsub ("[^a-zA-Z]", "", palabras) # quitar lo que no sean letras palabras <- tolower (palabras) # pasar a minúsculas porvocal <- grep ("^[aeiou].*[aeiou]$", palabras, value=TRUE) length (porvocal)