You are on page 1of 9

Manual para elaboracion de GUI en R

14 de enero de 2016
Como tenemos conocimiento R es un programa estadstico muy potente y
versatil que permite realizar desde las operaciones ms bsicas estadisticas hasta
las ms complejas lo cual es una gran ayuda al momento de realizar trabajos en
diferentes campos.
Una herramienta es la que nos permite realizar una interface grafica con la cual se
puede ser mucho ms amable con el usuario que necesite de dicho programa, las
ventajas de realizar una aplicacion con interface de R es que no necesitaremos
escribir los comandos para realizar las operaciones una y otra vez sino que
solo ejecutamos nuestra interface y esta internamente ejecutara las lneas de
programcin ya establecidas cada vez que ejecutemos una accin.
En este pequeo manual se revisara comandos bsicos con los cuales podremos
ejecutar acciones por botones, mostrar datos en espacios de texto, ingresar datos
o informacion a partir de teclado, mostrar datos, y algunas otras funciones
bsicas que nos ayudar a realizar nuestra primera GUI en R.
Para el ejemplo que realizaremos necesitaremos las librerias:
tcltk
relimp
gWidgetstcltk
Los cuales se los puede agregar en el programa siguiendo los pasos:
Una vez abierto el programa R damos click en "Packagesbicado en la
barra de herramientas.
Seleccionamos la opcin Install Package(s)
Se abrira un cuadro de dialogo que nos preguntara el servidor del que
deseamos decargar el paquete deseado, lo podemos dejar por defecto 0Cloud y presionamos OK
Una vez que recepte los datos del servidor nos mostrara una lista de paquetes disponibles seleccionamos el deseado y presionamos en OK
Otra forma de agregar paquetes es descargando el paquete comprimido de la
pagina:
1

http://cran.r-project.org/web/packages/available_packages_by_
name.html
Una vez descargados los paquetes comprimidos necesarios tenemos que serguir
los siguientes pasos para usarlos:
Una vez abierto el programa R damos click en Packages ubicado en la
barra de herramientas.
Seleccionamos luego damos click en Install package(s) from local zip files.
Se abrira un cuadro de dialogo en el que buscaremos la direccin de los
archivos descargados y presionamos en Abrir.
Con esto se instalaran los paquetes que necesitamos.
Una vez instalados los paquetes en la siguiente tabla veremos algunos comandos
con su descripcin.
Comandos
tktoplevel

tkwm.title
tkwm.title
tkgrid
tklabel
tkbutton
tkdestroy

Descripcin
Sirve para crear una nueva ventana en donde ubicaremos todos
los elementos que tendra nuestra
interface.
Sirve para poner titulo a la ventana creada.
Sirve para poner titulo a la ventana creada.
Sirve para ubicar los elementos
dentro de la ventana deseada.
Sirve para aadir etiquetas en
la interface.
Sirve para crear un botn.
Sirve para terminar la ejecucin
de las ventanas

Cuadro 1: Comandos bsicos para crear una Interface simple.


Con esta breve introduccin estamos listos para realizar nuestra interface, la
que consistir en el ingreso de datos por teclado, la visualizacin de los mismos
en una tabla, y el manejo de dichos datos con los cuales encontraremos promedio,
media, varianza. Adems veremos como realizar una funcin la cual se asocia
con cada uno de los botones y realizar acciones.
Lo primero que debemos hacer es crear un script en el cual escribiremos lo
siguiente:
require(tcltk) %Carga la libreria cada vez que se ejecute el script.
2

Figura 1: Ventana Principal

c<-tktoplevel() %Crea una ventana y le asigna el nombre c.


tkwm.title(c,Ejemplo) %Establece un nombre a la ventana.
Una vez realizado esto como resultado tendremos lo siguiente.
Ya que tenemos la ventana creada nos damos cuenta que tiene el nombre
que establecimos anteriormente, lo siguiente que realizaremos es la creacin de
botones, para ello aadiremos las siguientes lneas de comandos.
Ingreso.but<-tkbutton(c,text=Ingreso de Datos,command=IngresoDatos) %Crea
un boton que en la ejecucin del programa se establecer como Ingreso,
ademas se agrega el label Ingreso de Datos que sera la etiqueta que se
visualiza en la ventana, ademas con la parte command=IngresoDatos
hace una llamada a la funcin dicha funcin realiza una secuencia de instrucciones.
tkgrid(Ingreso.but) %Agrega el Botn a la ventana creada, este botn no
realizara ninguna accin ya que la funcin asignada al botn no est creada.
Hecho esto observamos lo siguiente. Ahora crearemos la funcin para el botn
creado esto nos ayuda a que cuando presionemos el botn ejecute las acciones
dentro de la funcin. Para esto haremos lo siguiente:
IngresoDatos<-function(){ } %Crea la funcin IngresoDatos este es el
nombre que se buscara en el llamado de la funcin
Hecho esto creamos una funcin que sera la respuesta al llamado cada vez que
se presione el botn, como la funcin esta sin ninguna accin al interior cada
3

Figura 2: Ventana Principal con un Botn

Figura 3: Ventana para Ingreso de Datos por Teclado

vez que presionemos el botn no se observa ninguna reaccin en el programa,


agreguemos acciones en esta funcin y como dice el nombre del botn vamos a
agregar las acciones necesarias para insertar los datos y hacer las operaciones
para el cual estamos elaborando este programa.
Dentro de las llaves de la funcin escribimos lo siguiente:
x=ginput(Ingrese la cantidad de datos) %Crea una variablex a la cual
se le asignara los valores insertados por teclado mediante el comando ginput el cual abre un cuadro de dialogo como el que observamos en la
siguiente imagen.
x=as.numeric(x) %Transforma los datos guardados en x en una variable
numerica la cual nos permitir realizar operaciones y ocupar en nuestro
programa.
y<-matrix(nrow=x,ncol=1) %Crea una matriz y le asigna el nombre y
la cual va a ser una varible global para poder ocupar en distintas partes
del programa, fijamos la cantidad de filas y columnas.
for (i in 1:x){ y[i,]<-ginput(Ingrese los datos, icon=question) } %Crea
un bucle para el ingreso de datos por teclado.
r<-tktoplevel() %Creamos una nueva ventana donde mostramos los errores.
4

tkwm.title(r,Resultados) %Establece el titulo Respuestas a la ventana


creada donde vamos a mostrar los resultados.
y=as.numeric(y) %Transforma los datos de la variable y en numerica
para poder manejar los resultados.
prom<-mean(y) %Saca el promedio de los datos ingresados en la variable
y.
prom<-toString(prom) %Transforma el valor guardado en la variable prom
a una cadena de caracteres para poder mostrarlo en la ventana de resultados.
varianza<-var(y) %Saca la varinza de los datos ingresados en la variable
y.
varianza<-toString(varianza) %Transforma el valor en la variable varianza en una cadena de caracteres para poder mostrarlo en la ventana de
resultados.
mediana<-median(mediana) %Saca la mediana del los datos ingresados en
la variable y
mediana<-toString(mediana) %Transforma el valor en la variable mediana en una cadena de caracteres para poder mostrarlo en la ventana de
resultados.
tkgrid(tklabel(r,text=),tklabel(r,text="Promedio= "),tklabel(r,text=prom)) %Agrega
la etiqueta Promedio= y el valor guardado en la variable prom a la
ventana r.
tkgrid(tklabel(r,text=),tklabel(r,text="Mediana= "),tklabel(r,text=mediana)) %Agrega
la etiqueta Mediana= y el valor guardado en la variable mediana a la
ventana r.
tkgrid(tklabel(r,text=),tklabel(r,text="Varianza= "),tklabel(r,text=varianza)) %Agrega
la etiqueta Varianza= y el valor guardado en la variable varianza a la
ventana r.
Con esto la ventana de resultados presentara los resultados de la siguiente manera: Luego de esto vamos a agregar un par de botones con las funciones que
nos permitir visualizar los datos en una ventana aparte, y un botn que nos
permite salir de la interface.
Para mostrar los datos en una nueva ventana debemos importar el paquete
relimp.
Mostrar.but<-tkbutton(c,text="Mostrar Datos",command=MostrarDatos) %Crea
un nuevo botn que va a tener el nombre Mostrar y va a llamar a la
funcin MostrarDatos.

Figura 4: Ventana de Resultados

Exit.but<-tkbutton(c,text="Salir",command=Salir) %Crea un nuevo botn que va a tener el nombre Salir y va a llamar a la funcin Salir.
tkgrid(tklabel(c,text=)) %Salta un Espacio, esto nos sirve para poder ordenar los botones y etiquetas, con lo cual podemos alinear los elementos.
tkgrid(tklabel(c,text=),Mostrar.but,tklabel(c,text=)) %Realiza una tabulacin y agrega el botn de Mostrar.
tkgrid(tklabel(c,text=)) %Salta un Espacio, esto nos sirve para poder ordenar los botones y etiquetas, con lo cual podemos alinear los elementos.
tkgrid(tklabel(c,text=),Exit.but) %Realiza una tabulacin y agrega el botn de Salir.
tkgrid(tklabel(c,text=)) %Salta un Espacio, esto nos sirve para poder ordenar los botones y etiquetas, con lo cual podemos alinear los elementos.
Crearemos las funciones de los botones agregados.
MostrarDatos<-function(){ } %Crea la funcin MostrarDatos aun sin
realizar ninguna accin.
Agregamos la accin que realizara la funcin MostrarDatos.
showData(y) %Este comando pertenece a la libreria relimp el cual muestra en una nueva ventana los datos de una variable.
Los datos con el comando showData se mostraran de la siguiente manera.
Agregaremos la funcin para el botn salir, el cual permite cerrar la ejecucin
de la interface.
Salir<-function(){ } %Crea la funcin Salir.
tkdestroy(c) %Cierra la ventana asignada con el nombre c.
tkdestroy(r) %Cierra la ventana asignada con el nombre r.

Figura 5: Ventana donde se Muestran los Datos

Figura 6: Ventana Principal

Figura 7: Ventana de Resultados

Figura 8: Ventana donde se Muestran los Datos

Una vez insetado todos los elementos la ventana principal de la aplicacin quedara de la siguiente manera: El programa completo deber quedar de la siguiente
manera:
require(tcltk)
require(relimp)
require(gWidgets)
options(guiToolkit="tcltk")
require(gWidgetstcltk)
c<-tktoplevel()
tkwm.title(c,.Ejemplo")
IngresoDatos<-function(){
x=ginput(ngrese cantidad de datos")
x=as.numeric(x)
y<-matrix(nrow=x,ncol=1)
for (i in 1:x){
y[i,]<-ginput(ngrese los datos", icon="question")
}
r<-tktoplevel()
tkwm.title(r,Resultados")
y=as.numeric(y)
prom<-mean(y)
prom<-toString(prom)
varianza<-var(y)
varianza<-toString(varianza)
mediana<-median(y)
mediana<-toString(mediana)
tkgrid(tklabel(r,text=),tklabel(r,text="Promedio= "),tklabel(r,text=prom))
tkgrid(tklabel(r,text=),tklabel(r,text="Mediana= "),tklabel(r,text=mediana))
tkgrid(tklabel(r,text=),tklabel(r,text="Varianza= "),tklabel(r,text=varianza))
}
MostrarDatos<-function(){
showData(y)

}
Salir<-function(){
tkdestroy(c)
tkdestroy(r)
}
Ingreso.but<-tkbutton(c,text=ngreso de Datos",command=IngresoDatos)
Mostrar.but<-tkbutton(c,text="Mostrar Datos",command=MostrarDatos)
Exit.but<-tkbutton(c,text="Salir",command=Salir)
tkgrid(tklabel(c,text=))
tkgrid(tklabel(c,text=),Ingreso.but)
tkgrid(tklabel(c,text=))
tkgrid(tklabel(c,text=),Mostrar.but,tklabel(c,text=))
tkgrid(tklabel(c,text=))
tkgrid(tklabel(c,text=),Exit.but)
tkgrid(tklabel(c,text=))

You might also like