solucion-2021-01-20

  1. Ejemplo en Bash:
    for i in $(seq 1 1000)
    do mkdir ~/experimento$i
    cp /home/manadine/dat/examen/experimento$i/resumen.txt experimento$i
    done
    

    En R:

    for (i in 1:1000)
    {
       system (paste0 ("mkdir ~/experimento", i))
       system (paste0 ("cp /home/manadine/dat/examen/experimento",i,
                       "/resumen.txt experimento",i))
    }
    
  2. Descubrir el fichero .Rhistory mediante
    ls -a /home/manadine/dat/examen
    

    o bien

    find /home/manadine/dat/examen
    

    y luego ver su contenido:

    cat /home/manadine/dat/examen/.Rhistory
    

    Hay un bucle que crea los ficheros "resultado" y otro para los ficheros "resumen".

  3. En R:
    estaciones.datos <- read.csv2("https://carleos.epv.uniovi.es/~carleos/aireUO/dat/csv/Estación_Señal.csv")
    estaciones.idnombre <- unique (estaciones.datos [c("id_es","nombre_es")])
    estaciones.nombre <- as.character (estaciones$nombre_es)
    estaciones.id <- as.character (estaciones$id_es)
    names(estaciones.nombre) <- estaciones.id
    
    for (estacion in estaciones.id)
        for (anno in 2010:2018)
        {
            a <- try (read.csv (paste0 ("https://carleos.epv.uniovi.es/~carleos/aireUO/dat/csv/",
                                        anno, "/vale",
                                        formatC(as.numeric(estacion),width=3,flag=0), ".csv")),
                      silent = TRUE)
            if (class (a) == "data.frame")
            {
                so2 <- a$SO2_HI [a$FL_SO2 == "V"]
                superaciones <- sum (so2 > 150)
                if (superaciones > 24)
                    cat ("SUPERA", superaciones, "veces", estaciones.nombre[estacion], "en an~o", anno, "\n")
            }
        }
    closeAllConnections () # quedan muchas abiertas por los errores de descarga
    
  4. En R:
    ## Los datos han sido generados asi':
    n.base <- 1000
    n.nuevos <- 5
    n.locus <- 4
    generar.genotipo1 <- function () sample (120:122,1)
    generar.genotipos <- function (n, prefijo)
    {
        M <- matrix (replicate (n * n.locus * 2, generar.genotipo1()),
                     n)
        rownames(M) <- paste0(prefijo, 1:n)
        colnames(M) <- paste0 ("Locus", c (t (outer (1:n.locus, c("a","b"), paste0))))
        M
    }
    base   <- generar.genotipos (n.base,   "Base")
    nuevos <- generar.genotipos (n.nuevos, "Nuevo")
    write.table (base, "base.txt")
    write.table (nuevos, "nuevos.txt")
    
    ## lectura de datos
    base <- read.table ("base.txt")
    nuevos <- read.table ("nuevos.txt")
    n.locus <- ncol(base) / 2
    
    ## resoluciones
    coincidencias <- function (g1, g2)
    {
        g1 <- as.numeric(g1) # porque van a usarse con dataframes
        g2 <- as.numeric(g2)
        indices <- seq (1, by=2, length.out=n.locus)
        sapply (indices,
                function (i) setequal (g1[c(i,i+1)],
                                       g2[c(i,i+1)]))
    }
    ## coincide alguno ?
    for (i in 1:nrow(nuevos))
        for (j in 1:nrow(base))
            if (all(coincidencias(nuevos[i,],base[j,])))
                cat ("El nuevo", i, "coincide con el", j, "de la base.\n")
    ## otra forma de hacerlo:
    apply (outer (1:nrow(nuevos),
                  1:nrow(base),
                  Vectorize (function (i, j) all(coincidencias(nuevos[i,],base[j,])))),
           1,
           any)
    ## con cua'ntos coincide
    apply (outer (1:nrow(nuevos),
                  1:nrow(base),
                  Vectorize (function (i, j) all(coincidencias(nuevos[i,],base[j,])))),
           1,
           sum)
    ## proporcio'n de coincidencias
    100 * outer (1:nrow(nuevos),
                 1:nrow(base),
                 Vectorize (function (i, j) mean(coincidencias(nuevos[i,],base[j,]))))
    

Author: Carlos CARLEOS

Created: 2021-01-20 mié 23:19

Emacs 24.5.1 (Org mode 8.2.10)

Validate