Anda di halaman 1dari 16

Creacin de paquetes de R en Windows (y Linux)

Francesc Carmona
fcarmona@ub.edu
Departamento de Estadstica
Universidad de Barcelona
Marzo 2013
El proceso para escribir paquetes de R se describe con todo detalle en el manual Writing R
extensions (WRE) del R Core Team y que se puede ver en el Comprehensive R Archive
Network (CRAN). Un manual ms sencillo es Creating R Packages: A Tutorial de Friedrich
Leisch. Sin embargo, en este documento se pretende concretar y hacer comprensible el
proceso de creacin de un paquete de R en el entorno Windows y para usuarios no expertos.
Aunque es posible aadir cdigo en un lenguaje de bajo nivel (como C/C++/Fortran), vamos a
centrarnos nicamente en el empaquetado de cdigo y datos en R.
R fue diseado en un entorno Unix que incluye un conjunto de herramientas como
compiladores, utilidades de programacin y rutinas de consola (text-formating routines). De
entrada Windows carece de estos componentes, de forma que deberemos descargar e instalar
algunos programas de software libre equivalentes a los de Unix.
Aunque se puede crear un paquete nicamente desde la consola de R y la consola del sistema,
es preferible utilizar un programa como RStudio que nos facilitar algunas tareas.
Porqu crear un paquete de R?
Algunas de las principales razones son:
1. En primer lugar, crear un paquete nos obligar a pulir nuestras funciones, datos y
cdigo y, sobre todo, a documentar todo el trabajo y dar ejemplos claros. Las
funciones sern ms fciles de usar y podremos utilizar el comando ? para ver detalles
de los parmetros, los resultados y ejemplos.
2. Es el modo ms elegante de compartir su trabajo. Los posibles usuarios del paquete
agradecern el esfuerzo de mejora y documentacin que requiere la creacin de un
paquete. El intercambio con los usuarios tambin favorece la mejora del cdigo.
3. Es la forma establecida para contribuir al crecimiento de R.
Instalacin de los programas que le faltan a Windows
Se necesitan las siguientes componentes:
1. Un conjunto mnimo de utilidades tipo Unix (las llamadas Rtools) de Brian Ripley y
que ahora mantiene Duncan Murdoch.
2. Algunos compiladores GNU reunidos en MinGW-w64 (necesarios nicamente si su
paquete contiene cdigo C, Fortran o C++). El compilador de Perl ya no es necesario
para nada.
1

3. El compilador de la ayuda HTML de Microsoft.


4. Una versin del procesador de textos TeX (como MiKTeX para Windows).
La obtencin de las dos primeras componentes se hace directamente del CRAN. En nuestro
mirror preferido hacemos Download R for Windows y Rtools, para seleccionar el ejecutable
RtoolsXX.exe ms actual.

Figura 1: Instalacin de las Rtools.


Al instalar este archivo optaremos por la Package authoring installation.
Se aconseja mantener los nombres de las carpetas de instalacin o recordar las que
modifiquemos por si debemos introducirlas en la variable PATH. El programa de instalacin
nos ofrece la posibilidad de modificar automticamente la variable PATH. Es razonable
aceptar el ofrecimiento.
Tambin es recomendable, aunque no imprescindible, descargar e instalar el compilador
HTML de Windows. Para ser exactos se puede descargar del Download Center, se trata del
Microsoft HTML Help Workshop y el archivo es htmlhelp.exe.
Finalmente, deberemos instalar una versin del procesador TeX si queremos someter el
paquete creado al CRAN. El TeX se utiliza para obtener las versiones LaTeX de la
documentacin. La distribucin MikTeX (http://www.miktex.org/) de LaTeX en su versin
bsica debera ser suficiente para lo que necesitamos. Tambin es posible usar la distribucin
TeXLive de http://www.tug.org/texlive/.
En el apndice The Windows toolset de la documentacin de R "R Installation and
Administration" podemos hallar ms detalles de los elementos necesarios, tanto para crear un
paquete, como para compilar el propio R.
Adems necesitaremos un editor ASCII como el propio RStudio u otro.

La variable de entorno PATH


Cuando instalamos las Rtools, opcionalmente, el programa de instalacin nos ofrece editar la
variable PATH variable as:
PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;<otros>
Es muy importante que comprobemos que las carpetas son correctas respecto a nuestras
indicaciones anteriores y, sobre todo, que dejemos el PATH en el mismo orden. LaTeX y el
HTML Help Workshop deberan instalarse con los "otros".
Ahora Windows est preparado para localizar estos programas y utilidades. El siguiente punto
fundamental es probarlos. Para ello abriremos una ventana Indicador de comandos (las
variables de entorno se inicializan y fijan cada vez que abrimos esta ventana). Escribimos
path y ejecutamos esta instruccin. El resultado es la lista de carpetas de la variable de
entorno PATH. Lemosla con cuidado para observar si falta alguna carpeta o si hay algn
error. Un ejemplo:
C:\Usuarios\fcarmona>path
PATH=c:\Rtools\bin;c:\Rtools\gcc-4.6.3\bin;
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem
<otras>

A continuacin, sin cerrar la ventana Indicador de comandos, procederemos a comprobar la


ejecucin de algunos programas desde la lnea de comandos.
Escribimos R y ejecutamos. Con ello abrimos una sesin de Rterm que es la versin de
lnea de comandos de R. Si vamos a trabajar desde RStudio no es necesario que incluyamos
en el PATH el camino a los ejecutables de R. En caso contrario es imprescindible. Si
queremos que R funcione en el Indicador de comandos y R funciona en Windows pero
ahora la respuesta es un mensaje de error y no entramos en el programa, est claro que no
tenemos escrita correctamente la localizacin del programa en la variable de entorno PATH.
Si todo va bien, veremos el mensaje de bienvenida al programa R y ejecutaremos q() para
salir.
Para ver si los otros programas estn bien instalados, ejecutaremos algunas instrucciones en la
lnea de comandos (cada una por separado):
gcc --help
tex --help
tar --help

(compilador GNU de C)
(programa TeX)
(una de las Rtools)

Para cada una, deberamos obtener una larga lista de opciones. Eso nos indica que los
programas estn listos para ser utilizados.
Si alguna instruccin falla, habr que localizar las carpetas que contienen los ejecutables
(.exe) de estas instrucciones y corregir adecuadamente la variable de entorno PATH. Para ello
haremos clic con el botn derecho del ratn en el icono de Inicio del escritorio con la
siguiente secuencia:
Panel de control Sistema y seguridad Sistema Configuracin avanzada del sistema

Figura 2: Ventana de las variables de entorno


Con esto llegaremos a las Propiedades del sistema y en la pestaa Avanzados pulsaremos el
botn Variables de entorno y nos encontraremos con una ventana como la Figura 1.
Para modificar la variable de sistema PATH seleccionaremos y pulsaremos el botn de
edicin. Se trata de escribir, separadas por un punto y coma, las carpetas donde se localizan
los programas de las Rtools, compilador GCC, compilador HTML, R y TeX.
Hay que tener mucho cuidado en la escritura correcta de los nombres de las carpetas.
Deberemos recordar con exactitud donde hemos instalado cada uno de los programas.
Algunos detalles:
a) En Windows, los nombres de las carpetas son equivalentes en maysculas o en
minsculas.
b) Es posible que algunas carpetas ya hayan sido escritas en la instalacin del programa
correspondiente.
c) La subcarpeta bin acostumbra a contener los archivos ejecutables como ocurre en
los sistemas operativos Unix y Linux.
Una vez modificada la variable PATH, debemos comprobar el entorno Windows como ya se
ha explicado para ver si todo funciona correctamente. Si todo est bien, estamos preparados
para construir nuestro paquete.

Construccin del paquete


La referencia fundamental para la construccin de un paquete est en los captulos 1 y 2 del
documento Writing R extensions (PDF), que tambin podemos consultar en la web Writing R
extensions (HTML). En ellos se describen los detalles y los documentos necesarios, aunque el
proceso resulta un poco confuso. En este documento no estn todas las opciones pero se
describir el proceso de creacin de un paquete sencillo.
Paso 1: Creacin de la estructura de carpetas y archivos
Este paso se puede hacer de forma manual con la funcin package.skeleton() o como un
proyecto Paquete en RStudio. Primero vamos a ver la forma manual y a continuacin
explicaremos su equivalente en RStudio.
De forma manual, lo ms sencillo es utilizar la funcin con sus mnimos parmetros de la
siguiente forma:

Limpiar el espacio de trabajo

> rm(list = ls())

Cargar en R los objetos (funciones y datos) del futuro paquete.


Crear la estructura en la carpeta nombre_paquete
> package.skeleton(nombre_paquete, path=C:/Carpeta_obj)

Esto crear la estructura de carpetas y archivos en el lugar indicado por el parmetro


path y en el interior de la carpeta nombre_paquete que tambin ser obviamente el
nombre del paquete. La direccin indicada en el parmetro path debe existir
previamente. Si estamos situados en la carpeta de trabajo que ya nos conviene,
podemos omitir el parmetro path.
Observemos un detalle importante en la indicacin del camino a la carpeta. La barra
/ es la barra oblicua o slash de Unix y no la barra inversa \ tpica en Windows.
Si queremos poner una barra inversa, hay que ponerla doble \\.
Otra posibilidad es detallar las funciones y objetos que deben formar nuestro paquete
> package.skeleton(nombre_paquete, path=C:/Carpeta_obj,
list=c(funcion1, datos1, ms))

Todos los detalles de esta funcin se pueden consultar en su ayuda.


El contenido de la carpeta creada es el siguiente:
1. En su nivel superior se encuentran los archivos de definicin y de informacin
como
Read-and-delete-me
DESCRIPTION
NAMESPACE

Indicaciones para la creacin del paquete


Describe las caractersticas principales del paquete
Carga los paquetes necesarios y exporta las funciones
5

2. Algunas carpetas como


carpeta
R
man
src
data

contenido
funciones del paquete
documentacin o ayuda
cdigo en un lenguaje de bajo nivel (opcional)
bases de datos (opcional)

Ejemplo
Vamos a crear un paquete muy sencillo con dos funciones elementales. Se trata de calcular el
intervalo de confianza y el test para la media con datos normales y varianza conocida. Las
funciones son:
IC.z.test <- function(x, sigma, conf.level=0.95){
alpha <- 1 - conf.level
z.alpha <- qnorm(1-alpha/2)
n <- length(x)
SE <- sigma/sqrt(n)
return(mean(x) + c(-1,1)*z.alpha*SE)
}
z.test <- function(x, mu=0, sigma=1){
n <- length(x)
SE <- sigma/sqrt(n)
z <- (mean(x)-mu)/SE
p.value <- (1-pnorm(abs(z)))*2
return(list(media=mean(x), z=z, p.valor=p.value))
}

La instruccin que crea el paquete, suponiendo que la carpeta C:/Rpaquetes exista, es:
> package.skeleton("miPaquete", path="C:/Rpaquetes")

Ahora podemos examinar el contenido de la carpeta miPaquete y rellenar todos los archivos
necesarios.
Paso 1 con RStudio
Para crear un nuevo paquete con RStudio utilizaremos la instruccin Create Project desde el
men Project o desde la barra de herramientas. Atencin: si estamos trabajando, eso cierra la
sesin y abre una nueva. Es mejor iniciar una sesin y crear el proyecto desde cero.
Debemos seleccionar el Type: Package, dar un nombre al paquete que ser tambin el nombre
del proyecto y el nombre de la carpeta y decirle donde crearlos (carpeta y proyecto). De
entrada nos ofrece crearlos en la carpeta por defecto o home. No en la carpeta de trabajo.
Mejor si especificamos la carpeta exacta donde se crear la carpeta del paquete o proyecto.
Tambin hay que aadir el archivo fuente con las funciones y datos que queremos incorporar
al paquete. As, cuando pulsemos el botn Create Project, se crear toda la estructura de
archivos necesaria dentro de la carpeta especificada y estaremos en disposicin de rellenar los
archivos de configuracin y documentacin del paquete.
6

Figura 3: New Project en RStudio.

Figura 4: Create New Project en RStudio.


7

Paso 2: Edicin de los archivos de descripcin


El primero y fundamental es el archivo DESCRIPTION.
Este archivo le indica a R las caractersticas bsicas de nuestro paquete y un breve resumen de
su funcionalidad.
Si editamos el archivo DESCRIPTION que hemos creado para nuestro paquete de ejemplo
miPaquete, observaremos que se deben rellenar los campos con los datos concretos:
Package: miPaquete
Type: Package
Title: What the package does (short line)
Version: 1.0
Date: 2007-07-17
Author: Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: What license is it under?

Este es el conjunto mnimo de campos. Otros campos son opcionales, pero en todo caso hay
que tener mucho cuidado al rellenarlos ya que este archivo se consulta durante el proceso de
creacin del paquete.
Observemos que el nombre del paquete es el mismo que el de la carpeta y el mismo que
utilizaremos en la construccin del paquete.
La fecha al estilo yyyy-mm-dd.
Si algn campo ocupa ms de una lnea, como el campo Description, la segunda y
siguientes deben empezar por un tabulador o espacio en blanco.

Figura 4: El archivo DESCRIPTION en RStudio.


Ejemplo
Para el paquete que pretendemos crear un archivo DESCRIPTION es
Package: miPaquete
Type: Package
Title: Test para la media en poblaciones normales con varianza conocida
Version: 1.0
Date: 2013-02-27
Author: Francesc Carmona <fcarmona@ub.edu>
Maintainer: Francesc Carmona <fcarmona@ub.edu>

Depends: R (>= 2.15.2)


Description: Este paquete proporciona algunas funciones para calcular el
intervalo de confianza y el test para la media de una variable normal
con varianza conocida.
License: GPL (version 2 or later)
Encoding: latin1

Aunque no es recomendable, hemos aadido el item Encoding para utilizar el idioma propio
(castellano, cataln,...) en los archivos de ayuda. En linux sera Encoding: UTF-8.
Otras posibilidades se pueden ver en el documento de referencia Writing R extensions.
Otro archivo importante es el NAMESPACE. Sirve para cargar los paquetes o libreras que
necesita nuestro paquete y para indicar qu funciones haremos pblicas (con ayuda). Nuestro
paquete de ejemplo es tan sencillo que no lo necesita.
Paso 3: Documentacin de las funciones
Curiosamente, este es uno de los pasos ms difciles, pero irrenunciable. Si nuestra
documentacin es confusa, pobre o inexistente, el paquete no se podr utilizar. Incluso por su
creador o creadora!
La subcarpeta man contiene los archivos de documentacin (Rd) de cada uno de los objetos
utilizables del paquete. Para cada funcin de la carpeta R, debemos crear un archivo de
documentacin (con la extensin Rd) en la carpeta man. Es decir, si miFuncion.R es un
archivo de la carpeta R, debemos crear el archivo miFuncion.Rd en la carpeta man.
R utiliza un lenguaje especial para crear estos archivos de documentacin Rd. La
instalacin de R se encargar de trasladar este lenguaje genrico Rd a archivos HTML, de
texto o LaTeX, segn se necesite. Este lenguaje de documentacin tiene una semejanza
evidente con el LaTeX. En todo caso no es necesario saber LaTeX para escribir la
documentacin de nuestro paquete.
Si hemos utilizado la funcin package.skeleton(), ya tenemos una plantilla Rd para cada
funcin de nuestro paquete. Ahora debemos editar y rellenar la informacin requerida.
El lenguaje Rd consiste en una serie de instrucciones con sus correspondientes argumentos.
Cada instruccin es de la forma:
\command{arg}

Por ejemplo
\title{ este es mi ttulo }

El archivo Rd para una funcin contiene los puntos obligatorios name, alias, title,
description, usage en la cabecera y keyword en el pi, adems de los puntos opcionales
como arguments, value, details, references, seealso, examples en el cuerpo del
archivo.
Adems de los puntos obligatorios, se recomienda aadir las secciones arguments, value,
author y examples. Luego un archivo Rd tpico tiene un mnimo de 10 secciones, cada
una de las cuales empieza por su correspondiente instruccin:
9

\name{ ... }
\alias{ ... }
\title{ ... }
\description{ ... }
\usage{ ... }
\arguments{ ... }
\value{ ... }
\author{ ... }
\examples{ ... }
\keyword{ ... }

En todo caso la recomendacin es empezar con un mnimo de puntos y aadir los que
deseemos despus de depurar de errores el archivo.
Por ejemplo, a continuacin se muestra la plantilla creada para la funcin z.test() de
nuestro paquete:
\name{z.test}
\alias{z.test}
%- Also NEED an '\alias' for EACH other topic documented here.
\title{ ~~function to do ... ~~ }
\description{
~~ A concise (1-5 lines) description of what the function does. ~~
}
\usage{
z.test(x, mu = 0, sigma = 1)
}
%- maybe also 'usage' for other objects documented here.
\arguments{
\item{x}{ ~~Describe \code{x} here~~ }
\item{mu}{ ~~Describe \code{mu} here~~ }
\item{sigma}{ ~~Describe \code{sigma} here~~ }
}
\details{
~~ If necessary, more details than the description above ~~
}
\value{
~Describe the value returned
If it is a LIST, use
\item{comp1 }{Description of 'comp1'}
\item{comp2 }{Description of 'comp2'}
...
}
\references{ ~put references to the literature/web site here ~ }
\author{ ~~who you are~~ }
\note{ ~~further notes~~
~Make other sections like Warning with \section{Warning }{....} ~
}
\seealso{ ~~objects to See Also as \code{\link{help}}, ~~~ }
\examples{
##---- Should be DIRECTLY executable !! ---##-- ==> Define data, use random,
##-- or do help(data=index) for the standard data sets.
## The function is currently defined as
function(x,mu=0,sigma=1) {

10

n <- length(x)
SE <- sigma/sqrt(n)
z <- (mean(x)-mu)/SE
p.value <- (1-pnorm(abs(z)))*2
return(list(media=mean(x), z=z, p.valor=p.value))
}
}
% Add one or more standard keywords, see file 'KEYWORDS' in the
% R documentation directory.
\keyword{ ~kwd1 }
\keyword{ ~kwd2 }% __ONLY ONE__ keyword per line

Algunos consejos para rellenar esta plantilla:


\name{}

da nombre al archivo de ayuda

Con el \alias{} se puede utilizar el mismo documento de ayuda para varios objetos. Es el
caso de las funciones dnorm, rnorm, pnorm y qnorm.
Los ejemplos deben ser ejecutables. R comprobar durante la instalacin que los ejemplos
funcionan.
El ltimo item \keyword{} debe contener como mnimo una de las palabras clave estndar
que se pueden hallar en el archivo R_HOME/doc/KEYWORDS.db1.
Las pginas de ayuda para conjuntos de datos siguen una estructura similar y contienen los
items name, alias, doctype, title, description, usage, format, source, examples y
keyword, donde doctype viene definido como {data} y keyword como {datasets}.
Instrucciones de formato Rd
Hay un extenso conjunto de instrucciones para dar formato. Todas ellas estn descritas en el
captulo 2 de WRE. Mi recomendacin es no abusar de ellas y, a medida que se tome
confianza, leer el captulo mencionado y probarlas.
Algunas de las ms utilizadas son:
Para utilizar la fuente typewriter (especialmente para cdigo R): \code{ miFuncion }
Insertar URL: \url{ http://www.r-project.org/ }
Insertar una direccin de correo: \email{ fcarmona@ub.edu }
La instruccin \arguments usa la subinstruccin \item para organizar una lista. Si el retorno
de la funcin es una lista, tambin se necesitar usar la instruccin \item. Por ejemplo, la
funcin z.test de nuestro paquete devuelve una lista con tres items. Esto significa que en la
seccin \value deberemos insertar:
\item{media}{ valor medio de los datos muestrales }
\item{z}{ valor del estadstico para el contraste }
\item{p.valor}{ p-valor para el contraste sobre la media }
1 R_HOME puede ser algo como C:/Archivos de programa/R/R-2.15.3

11

NOTA: no debe haber espacios entre la llave } que cierra el nombre del item y la llave que
abre { el texto del argumento.
Depuracin de un documento Rd
Los mensajes de error de R para los archivos de documentacin pueden ser muy crpticos. Por
ello es conveniente tener mucho cuidado en los detalles de su redaccin.
Peter Rossi (2006) da las siguientes recomendaciones:
Hay dos ideas fundamentales:
1. Crear el archivo Rd de forma incremental. Es decir, no escribir un archivo completo
a la primera. Se puede empezar con un archivo simple y probar los cambios uno a uno.
2. Trabajar con una nica funcin cada vez. Resistir la tentacin de escribir el paquete
completo y todos sus archivos Rd y esperar que el depurado conjunto funcione.
No es una buena idea ejecutar la instruccin R CMD check para chequear los archivos Rd al
principio. Es mejor usar R CMD Rd2txt primero. Si tenemos un archivo de documentacin,
mifun.Rd, se puede utilizar la siguiente instruccin en la consola:
R CMD Rd2txt mifun.Rd

Si funciona sin errores, use la instruccin:


R CMD Rdconv t=html o=mifun.html mifun.Rd

que producir la versin html. Entonces se puede abrir el archivo creado con su navegador
preferido. Inspeccione el resultado para ver si todas las secciones definidas se muestran
correctamente.
Claves para redactar archivos Rd:
1. Como en TeX/LaTeX, el formateador Rd tiene sus propias ideas sobre cmo debe
quedar un documento. No intente modificar el resultado demasiado, por ejemplo con
\cr (nueva lnea). Inserte una lnea en blanco para separar grupos de texto.
2. No olvide que % es el smbolo de comentario en los archivos Rd (como # lo es en
las funciones R).
Esto significa que debe tener cuidado con la multiplicacin de matrices en un ejemplo.
Utilice el carcter de escape \ para insertar %, como en C = A\%*\%B.
3. Evite los carcteres $, #, _, <, > y |.
4. No olvide cerrar las llaves { }. Lo mejor es utilizar un editor que facilite este tema.
5. La inclusin de ecuaciones en LaTeX es ms un problema que una solucin,
especialmente si tenemos en cuenta que los documentos presentados con la ayuda
(instruccin help o ?) son versiones en texto llano. Las ecuaciones LaTeX no se
traducen muy bien a texto. Esto se puede evitar con alguna alternativa, como un enlace
a un archivo PDF.
6. El procesador Rd es muy sensible a los espacios entre la instruccin y el principio del
argumento. Por ejemplo:
12

\author{Francesc Carmona}

7. Si

tiene

un

funcionar, pero \author {Francesc Carmona} no.

conjunto

\code{\link{nombre_funcion}}

de
funciones
relacionadas,
utilice
para insertar enlaces entre los diversos archivos de

documentacin.
Para aadir objetos a un paquete que se va a crear
Si queremos aadir objetos, como un conjunto de datos o una nueva funcin, a una estructura
de paquete ya creada, deberemos gravar los objetos mismos y sus archivos de documentacin
en las carpetas apropiadas.
Gravar un conjunto de datos se puede hacer con la instruccin save(). Los nombres de los
objetos a gravar se ponen como primer argumento. En el argumento file se debe especificar
la carpeta donde dejaremos los objetos. Por ejemplo, si queremos aadir un data.frame
datos, se gravar como Rda con la instruccin
> save(datos, file=C:/Rpaquetes/miPaquete/data/datos.Rda)

El cdigo R se debe gravar con la funcin dump(). Por ejemplo, para gravar una funcin de
nombre nuevo.test hacemos
> dump("nuevo.test", file="C:/Rpaquetes/miPaquete/R/nuevo.test.R")

Para redactar el archivo de documentacin asociado a un objeto se puede utilizar la funcin


prompt(). Esta crear el archivo Rd apropiado para el objeto especificado. En el argumento
filename tenemos que detallar la carpeta y el nombre en el que el archivo Rd se guardar.
Por ejemplo:
> prompt(nuevo.test, filename="C:/Rpaquetes/miPaquete/man/nuevo.test.rd")

Paso 4: Chequear el paquete


En teora, este paso es sencillo. Abra una ventana de instrucciones o consola y vaya hasta la
carpeta en la que empieza el rbol de carpetas de su paquete.
Use R CMD check para chequear su paquete.
R CMD check prueba directamente en la consola una serie de instrucciones que crearan los
archivos de documentacin en los formatos texto, LaTeX y HTML, compilar el cdigo
fuente y crear los DLL, chequear las inconsistencias y varios errores, ejecutar los ejemplos
y finalmente construir un manual en formato DVI.
La mejor forma de evitar los errores en este punto es revisar antes todo su cdigo con mucho
ojo:
1. Revise todas las funciones y ejecute los ejemplos de cada una.
2. Compile previamente y cree los DLL antes
3. Ejecute R CMD Rd2txt y R CMD Rdconv en todos los archivos Rd.
Si se tienen en cuenta estos detalles previos, los errores detectados por R CMD check se vern
gratamente limitados.
13

construir el paquete en una carpeta de nombre miPaquete.Rdcheck que se


crear en la misma carpeta donde la instruccin se invoca.
Finalmente, confirme que el tiempo de ejecucin de los ejemplos es inferior a 2 minutos. Esto
se puede ver en el archivo miPaquete-Ex.Rout en la carpeta Rdcheck.
R CMD check

Paso 4 con RStudio


RStudio dispone de una pestaa especfica para chequear el paquete.

Figura 5: La pestaa Build de RStudio.


Si pulsamos el icono Check se chequea el paquete y veremos los errores o advertencias2.
Corregidos los errores y todas las advertencias que podamos, el siguiente paso lo podemos
hacer con el icono Build & Reload que construye el paquete y lo carga para que lo probemos.
En RStudio tambin es posible chequear cada archivo Rd de forma individual ya que dispone
de un botn para ver el resultado en HTML. Por otra parte tambin se puede ejecutar
directamente en la consola de R la instruccin
> system("Rcmd.exe Rd2txt ~/R/miPaquete/man/z.test.Rd")

Paso 5: Crear el paquete


Use la instruccin R CMD build miPaquete para construir definitivamente el paquete. Esta
crear un archivo tar que se puede someter al CRAN o distribuir entre los colegas. En su
propio ordenador, que ya dispone de las herramientas necesarias, se puede usar la instruccin
R CMD INSTALL miPaquete para instalar su paquete en la localizacin habitual de todos los
paquetes del programa R. A continuacin se podr cargar en una sesin con la instruccin:
> library(miPaquete)

2 En una instalacin inicial con MikTeX se produjo un error inesperado con la fuente inconsolata. Ver la
solucin al final de este documento.

14

Paso 5 con RStudio


Con el icono More de la Figura 5 se despliega un men que permite crear el paquete en la
versin tar con la opcin Build Source Package.
Paso 6: Distribuir el paquete
El archivo tar que contiene el paquete se puede instalar gracias a las herramientas de que
dispone nuestro ordenador (Rtools, ...). En un ordenador Linux seguramente estas
herramientas se incluyen de forma natural y la instalacin del paquete no tendr ninguna
dificultad. Sin embargo, para instalar nuestro paquete en otro ordenador Windows ser mejor
convertirlo al formato zip y entonces se podr instalar desde el men:
Packages -> Install package(s) from local zip files ...

Para obtener el arhivo zip del paquete bastar con comprimir en este formato el paquete
Windows que ya est instalado en nuestro ordenador en la carpeta R_HOME/library. Al
nombre del archivo le podemos aadir el nmero de versin: miPaquete-1.0.zip.
Si hemos creado un paquete en Linux y queremos distribuirlo a usuarios Windows podemos
utilizar el servicio del CRAN (http://win-builder.r-project.org/) y en concreto la pgina:
http://win-builder.r-project.org/upload.aspx
Paso 6 con RStudio
Con el icono More de la Figura 5 se despliega un men que permite crear el paquete en la
versin zip en Windows con la opcin Build Binary Package.
Cmo escribir vignettes para un paquete
Adems de los archivos de documentacin en el formato Rd, R tambin permite incluir
archivos en otros formatos. Estos archivos se deben situar en la subcarpeta inst/doc del
paquete a crear. Su contenido se copiar en la subcarpeta doc cuando se instale el nuevo
paquete. En realidad los archivos se pueden escribir en cualquier formato, pero se recomienda
encarecidamente que sea en PDF.
Un caso realmente especial son los documentos en formato Sweave, los que llamaremos
package vignettes. Los documentos Sweave permiten integrar cdigo R en archivos LaTeX,
de forma que cuando se procesan se consigue un documento definitivo con los resultados del
cdigo R incrustados, tanto numricos, como grficos. Los documentos Sweave para un
paquete a crear se situarn tambin la carpeta inst/doc y se prueban con la instruccin R CMD
check (excepto las partes con eval=FALSE). La carpeta de trabajo para las pruebas es la
carpeta doc del paquete instalado, de forma que debemos asegurarnos que la carpeta
inst/doc contiene todo lo necesario.
La instruccin R CMD build se encarga de ejecutar los archivos Sweave y obtener sus
correspondientes PDF. Sin embargo, se pueden dejar las versiones PDF en la subcarpeta
inst/doc para que no se necesite su compilacin durante la instalacin. En todo caso, como

15

se ha explicado, R se encarga de chequear el cdigo R (no la literatura) de los archivos


Sweave.
Un problema con MikTeX
Con una instalacin inicial de MikTeX, al chequear por primera vez un paquete se produce un
error ya que no est instalado el paquete inconsolata. Con el MikTeX Package Manager se
puede instalar fcilmente. Sin embargo, el problema persiste hasta que se ejecuta la siguiente
instruccin en el Indicador de comandos:
initexmf --mkmaps

Bibliografa
R Core Team (2012). Writing R extensions
Rossi, P.(2006). Making R Packages Under Windows: A Tutorial.
Leisch, F. (2009). Creating R Packages: A Tutorial.
Falcon, S. and Gentleman, R (2006). Lab: Writing packages in R.

16

Anda mungkin juga menyukai