Merescut descans i més coses

Després de dos dies intensos a 100% R i molt més a les IV Jornadas de usuarios de R , ens hem pres un merescut descans abans de començar un nou any amb més reunions i més R.

Durant aquest temps han passat coses interessants del mon R i que comparteixo amb vosaltres:

Evidentment les IV Jornades de usuarios de R on podeu veure les presentacions i els documents dels tallers. També es van gravar en vídeo però no sé on està. Quan ho trobi ja actualitzaré l’entrada.

Sembla que la propera actualització de l’R serà la 3.0.0 (cal anar al dia 13 de desembre de 2012).

La actualització de la versió 0.97 de l’RStudio amb integrarció de la llibreria Rcpp, que permet utilitzar C++ dins l’R de forma fàcil. Al mateix temps Hadley publica una introducció en anglès del package Rcpp, sense el requisit de coneixer prèviament C++.

Apareix de mans dels desenvolupadors de l’RStudio un nou package anomenat Shiny. Aquesta llibreria permet crear de forma fàcil, aplicacions web per scripts d’R (amb un navegador local). Tot i que inicialment no ho tenien clar, s‘han compromès a que la versió per servidors també serà open source. Mireu algun exemple, aquí o aquí.

Publicació del volum 4/2 de Desembre 2012 de l’R Journal on podeu trobar diferents articles enfocats en R o alguna de les seves llibreries.

Finalment i per acabar, si teniu coneguts o companys de feina que estan interessats en començar amb l’R, des de Code School amb el patrocini d’O’Reilly, ho posen molt fàcil amb Try R.

4 responses to “Merescut descans i més coses”

  1. jofre janué says :

    Hola, com a molt principiant tinc dos dubtes;

    el primer fa referència a un bucle que he fet per pintar unes línies d’alçada amb diferents colors. Sense entrar en gaires detalls, té la següent estructura:

    for( i in 0:34){
    iso <- cat('contourplot(color(i))+')
    }

    funciona correctament i m'escriu tot els nivells i ordres amb els colors que vull, però no m'executa l'ordre de contourplot. Suposo que 'cat' no seria la millor opció, no?, sabeu amb que em funcionaria bé?

    El segon dubte és una consulta. Sabeu si es pot aplicar una api de google sobre una imatge raster georeferenciada que he generat jo? Hi ha alguna side amb exemples?

    • Lluís says :

      Hola Jofre,

      Sobre els teus dubtes:

      1)
      cat el que fa és Concatenate and Print els valors que passes per paràmetre. Per exemple cat(“hola”, 2, 5) retorna hola 2 5. No entenc exactament que vols fer però cat segur que no és el camí correcte. Amb el codi que ens mostres no sembla que et pugui funcionar res. Si no detalles un pel millor o passes un exemple reproduïble no et puc aportar gaire més. Per cert, fas servir algun package específic?

      2)
      Hi ha un parell de packages que utilitzen API de Google Maps i que estan al CRAN: RgoogleMaps i ggmap. Val la pena que et miris si et serveixen. Et passo una presentació que vaig fer al grup d’usuaris d’R on tracto una mica aquestes packages que he comentat: http://rpubs.com/Lluis_Ramon/Presentacio_mapes_amb_R

      Bona nit

      • jofre says :

        Hola Lluís, gràcies per la reposta.
        Bé en primer cas, i per no extendrem molt, crec que només és qüestió d’utilitzar la comanda correcta. M’explico;

        Estic fent una mapa raster amb dades georeferenciades i amb shapefiles de fronteres i una mascara d’alçada. Utilitzi els segünets paquets:

        library(sp)
        library(raster)
        library(maptools)
        gpclibPermit()
        library(gstat)
        library(lattice)
        library(latticeExtra)
        library(rasterVis)
        library(rgdal)
        library(classInt).

        La qüestió es que quan represento les dades amb levelplot() després hi vull afegir les isolinies d’alçada amb contournplot(), però cada una amb un color diferent. Com que no he trobat cap altre metode millor, ho faig sumant linia per linia amb el seu color asociat, p.e:

        levelplot()+

        contourplot(dades, scales = list(draw = FALSE), at=seq(100,100, by=100), col=”#8B0000″ , nlevels = 0, lwd=0.4, xlab= ” “, ylab=” “, margin = FALSE, labels=list(cex=0))+
        contourplot(dades, scales = list(draw = FALSE), at=seq(200,200, by=100), col=”#A60000″ , nlevels = 1, lwd=0.4, xlab= ” “, ylab=” “, margin = FALSE, labels=list(cex=0))+
        contourplot(dades, scales = list(draw = FALSE), at=seq(300,300, by=100), col=”#C10000″ , nlevels = 2, lwd=0.4, xlab= ” “, ylab=” “, margin = FALSE, labels=list(cex=0))+……

        Com que això es fa molt llarg vaig voler fer un bucle tipus

        for( i in 0:34){
        color <- br.palette2(35)[i+1]
        iso <- cat('contourplot(dades, scales = list(draw = FALSE), at=seq(',(i+1)*100,',',(i+1)*100,', by=100), col="',color,'\b", nlevels = ',i,', lwd=1, xlab=" ", ylab=" ", margin = FALSE, labels=list(cex=0))+')

        }

        que no faig bé i com ho podria fer?

        En quan el tema de les apis de google, tinc la necessitat de fer d'aquest tipus d'imatges una sortida per web per poder-ne consultar dades directament amb el retolí sobre el mapa. He vis que googleVis també es poden fer coses semblants, però no tinc clar quina escollir ni com començar. Si vols t'envio per mail tot el tema a veure que et sembla.

        Merci de nou.

  2. Lluís says :

    Hola Jofre,

    He vist que contourplot i levelplot són del package lattice que jo no utilitzo ni domino, jo uso ggplot2. Mirant ràpidament per internet he vist aquest link amb un dubte semblant: https://stat.ethz.ch/pipermail/r-help/2007-July/137533.html. Hem sembla que la solució no és molt pràctic però si que funcionaria, de fet jo he readaptat i sembla que fa el que vols:

    library(lattice)

    vcl <- contourLines(x = seq_len(nrow(volcano)),

    y = seq_len(ncol(volcano)),

    z = volcano,

    levels = c(172, 182))

    vcl2 <- contourLines(x = seq_len(nrow(volcano)),

    y = seq_len(ncol(volcano)),

    z = volcano,

    levels = c(102, 110))

    levelplot(volcano, add.cl = vcl, add.cl2 = vcl2,

    panel = function(…, add.cl, add.cl2) {

    panel.levelplot(…)

    lapply(add.cl, panel.polygon, border = 'red')

    lapply(add.cl2, panel.polygon, border = 'blue')

    })

    En quant a les APIs de google maps, els packages que et vaig comentar (ggmap i RgoogleMap) fant servir la API static map. Per tant no és interactiu. Et posa al fons un mapa de google maps i tu pintes les dades sobre el mapa. El que vols fer no ho he fet mai i no tinc cap idea clara. Potser googleVis és una bona opció. També podries mirar el package R2G2 que et permet guardar dades en fitxers de google earth. Però realment hauràs de provar-ho.

    Bona nit,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: