Ejecutando código de R desde gvSIG 2.3 mediante Renjin

Una de las novedades introducidas en gvSIG 2.3 y que ya comentamos en las 11as Jornadas Internacionales gvSIG (también hay una pregunta del público al final del vídeo), es la oportunidad de ejecutar código de R desde el Módulo de Scripting. Para realizar la ejecución de estos scripts de R, utilizamos la librería de Renjin. Vamos a explicar un poco más sobre esto.

Renjin es un interprete de R hecho en Java, no es exactamente el R nativo que conocemos. Nos permite ejecutar código en R a la vez que trabajar con toda la API de gvSIG, escrita en Java. Esta librería tiene sus ventajas, al estar totalmente integrada con gvSIG al soportar librerías Java, pero también tiene sus limitaciones, por ejemplo, no todas las librerías de R están disponibles para su uso con Renjin.

“Con Rejin, tenemos una gran integración con gvSIG, pero menor integración con R”

Podéis encontrar mucha más información sobre Renjin en su web, así como las librerías de R que se encuentran disponibles para su uso. Renjin se encuentra activamente en desarrollo, así que esperamos mejoras en el futuro, tanto de compatibilidad como de funcionalidad.

Os voy a mostrar un par de ejemplos. Abrimos gvSIG y vamos a Herramientas – Scripting – Editor de scripts, y aquí creamos un nuevo Script que sea de tipo R.

2016-03-15 10_41_12-Nuevo script

Podemos probar a ejecutar algo del código típico de R como sería:

main <- function() {
cat( "Hello\n" );
cat( "Hello\n" );
d1 <- c(1,3,5);

x <- sample(c("A", "B", "C"), size = 10, replace = TRUE)
print(as.factor(x))

df <- data.frame(x = seq(5), y = runif(5))
print(df)
}

El cual mostraría por consola:

Running script rtest_000.
Hello
Hello
[1] B A B B A C B A A C
Levels: A B C
x y
1 1 0,869
2 2 0,85
3 3 0,255
4 4 0,497
5 5 0,549
Script rtest_000 terminated.

En el siguiente ejemplo vamos a mostrar como importar una clase de Java:

import(java.util.HashMap)

main <- function() {

"Ejemplo renjin con Java"
ageMap <- HashMap$new()
ageMap$put("Bob", 33)
ageMap$put("Carol", 41)
print(ageMap$size())
age <- ageMap$get("Carol")
cat("Carol is ", age, " years old.\n", sep = "")

print(ageMap)

}

Que resultaria por consola:

Running script rtest_001.
[1] 2
Carol is 41 years old.
Script rtest_001 terminated.

Y por último y más interesante, vamos a mostrar como podemos interactuar con gvSIG, accediendo a una de las Vistas que tenemos abiertas para mostrar su nombre, importando las respectivas clases que necesitamos:

import (org.gvsig.app.project.documents.view.ViewDocument)
import (org.gvsig.app.ApplicationLocator)

main <- function() {

cat( "Acceso a una Vista\n" );
application <- ApplicationLocator$getManager();

view <- application$getActiveDocument(ViewDocument);
print(view$name)

}

Mostraría por consola:

Running script rtest_0020.
Acceso a una Vista
[1] "Vista GVISG 01"
Script rtest_0020 terminated.

2016-03-15 10_40_39-gvSIG 2.3.0.2425 RC1 _ Sin título

Aún tenemos que ver la mejor forma de trabajar con Renjin y gvSIG, ya que como hemos comentado, aún estamos en proceso de desarrollo de este módulo.

Cualquier colaboración, interés o feadback que recibamos de vosotros será bien recibido.

This entry was posted in development, gvSIG Desktop, scripting, spanish and tagged . Bookmark the permalink.

5 Responses to Ejecutando código de R desde gvSIG 2.3 mediante Renjin

  1. Pingback: Ejecutando código de R desde gvSIG 2.3 mediante Renjin – GeoNe.ws

  2. Pingback: Enlaces interesantes para Sistemas de Información Geográfica – Rubén G. Mateo

  3. Pingback: Camino a gvSIG 2.3: Extensión de R | gvSIG blog

  4. Pingback: ¡gvSIG 2.3 ya está aquí! | gvSIG blog

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