## (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)