[R-es] [r-help-es] Creando scrips en R

Oscar Perpiñan Lamigueiro oscar.perpinan en upm.es
Vie Sep 16 11:31:24 CEST 2011


Hola Gaspar,

Te aconsejo que definas funciones para las tareas que vayas a repetir,
y también el uso de las funciones de la familia *apply para aplicar tus
funciones sobre matrices, data.frames y listas.

Por ejemplo, te puede servir este trozo de código:

sampleRaster <- function(mapa){##mapa es un "character"
  Mapa1 <- readRAST6(mapa) 
  Mapa1.v <- as.vector(Mapa1.m <- as.matrix(Mapa1)) 
  Mapa1.vn <- Mapa.v[!is.na(Mapa.v)] 
  result <-  sample(Mapa.vn, 50) 
  result
}


## Lee la lista de ficheros de tu directorio
## Deberás poner la ruta que te interesa
## Consulta ?list.files para ver los detalles de su uso

mapaList <- list.files('/directorio/de/Mapas')

##aplica la función sampleRaster a cada fichero de tu directorio
sampleList <- lapply(mapaList, sampleRaster) 

## Aplica la función separability.measures a los elementos de la lista
## dos a dos con un uso anidado de lapply. Esta parte es mejorable
## conociendo bien cómo funciona la función separability.measures

SP <- lapply(sampleList, function(x1, lista){
  lapply(lista, function(x2, x1){
    separability.measures(x1, x2)
  }, x1)
}, sampleList)


Viendo que utilizas rasters, puede resultarte útil el paquete raster
(http://cran.r-project.org/web/packages/raster/).

Encontrarás manuales en la web de R-project:
http://cran.r-project.org/manuals.html
http://cran.r-project.org/other-docs.html


Saludos.

Oscar.

-------------------
Oscar Perpiñán Lamigueiro
Dpto. Ingeniería Eléctrica
EUITI-UPM

http://procomun.wordpress.com

-----------------------------------------
>Hola queridos usuarios de R-HELP-ES
>
>Primero que nada, muchas gracias a todo aquellos que me prestaron
>ayuda en mi anterior pregunta, fue de gran utilidad. 
>
>A lo siguiente, tengo ahora otras preguntas, que bajo mis
>conocimientos las considero complejas, espero que me puedan ayudar, se
>los agradezco de antemano. Necesito realizar las siguientes
>operaciones (#Operación general) a un conjunto de 18 mapas(áreas de
>entrenamiento), es decir realizarla (la #Operación general) a cada uno
>de los 18 mapas. El asunto está en hacer esas operaciones creando un
>scrip, para no tener que teclear esas operaciones a cada Mapa y por
>ende prolongar la vida de mi precioso teclado con valor de 50 pesos
>mexicanos
>
>#Operación general
>
>Mapa1 <- readRAST6 ('Mapa1') ###Para importar un raster de GRASS-GIS a
>R Mapa1.v <- as.vector(Mapa1.m <- as.matrix(Mapa1)) ###Convierto a
>matris y después a vector Mapa1.vn <- Mapa.v[!is.na(Mapa.v)] ###
>Elimino datos nulos del vector SP1 <-  sample(Mapa.vn, 50) ###
>Extraigo una muestra de 50 datos. 
>
>El asunto ahí no termina, después de realizar esas operaciones
>necesito calcular las "medidas de separabilidad" mediante el paquete(o
>script) separability.measures de Nikos Alexandris. La operación
>consiste en realizar comparaciones de pares para ese conjunto de 18
>muestras (SPn). La #operación base es la siguiente:
>
>#operación base
>
>separability.measures (SP1,SP2) -> SP1ySP2
>separability.measures (SP1,SP3) -> SP1ySP3
>>separability.measures (SP2,SP3) -> SP2ySP3
>separability.measures (SP2,SP3) -> SP2ySP4
>>separability.measures (SPn..,SPni…) -> SPn..ySPnij..
>
>
>Para el primer caso realicé el siguiente #scrip1 pero resulta que bash
>no funciona en R, o al menos no se como configurarlo, para el último
>caso no tengo ni idea de como realizarlo, de todos modos no puedo
>utilizar bash en R.
>
>
>#scrip1
>
>#!/bin/bash
>
>for mask in 1 2 3 4 5 6 7 9 10 11 12 13 14 15 16 17 18
>do 
> 
>CP=Cp10_m
>M=.m
>V1=.v
>V2=.vn
>
>$CP$mask <- readRAST6 ('$CP$mask')
>$CP$mask$V1 <- as.vector($CP$mask$M <- as.matrix($CP$mask))
>$CP$mask$V2 <- $CP$mask$V1[!is.na($CP$mask$V1)]
>SP$mask <-  sample($CP$mask$V2, 30)
>
>done
>############
>
>Y mi tercer problema es: podrían recomendarme libros, paginas webs,
>etc para aprender a programar o hacer scrips en R.
>
>Nuevamente muchas gracias.
>
>
>Gaspar Reyes Póndigo
>Universidad del Mar, Oaxaca, México
>Campus Puerto-Ángel
>Carretera principal Puerto Ángel Zipolite km 1.5 
>C.P. 70902
>
>_______________________________________________
>R-help-es mailing list
>R-help-es en r-project.org
>https://stat.ethz.ch/mailman/listinfo/r-help-es



Más información sobre la lista de distribución R-help-es