2012-03-28 8 views
15

Estoy escribiendo una viñeta para uno de mis paquetes.¿Es posible usar paquetes no importados en una viñeta de paquete?

En esta viñeta, me gustaría demostrar cómo este paquete puede interactuar con los paquetes que son otehr no ser importados por el NAMESPACE o por la sección Imports del archivo DESCRIPTION.

Por lo tanto, estoy poniendo una llamada require utilizar estos paquetes externos en mi viñeta, pero por supuesto que tiene la siguiente NOTE cuando intento R CMD check el paquete:

* checking for unstated dependencies in vignettes ... NOTE 
‘library’ or ‘require’ call not declared from: ‘RColorBrewer’ 

¿Hay alguna forma de evitar esto, o debería importar estos paquetes externos o "falsificar" la viñeta usando eval=FALSE?

Respuesta

20

Ponlo en Suggests: de tu archivo DESCRIPTION.

De p. 6 de la R extensions manual:

El ‘sugiere’ campo utiliza la misma sintaxis que ‘Depende’ y las listas de paquetes que no necesariamente necesitan. Esto incluye los paquetes utilizados solo en ejemplos, pruebas o viñetas (consulte la Sección 1.4 [Escribir paquetes viñetas], página 26), y los paquetes cargados en el cuerpo de funciones. P. ej., Supongamos que un ejemplo del paquete foo usa un conjunto de datos del paquete bar. Entonces no es necesario tener el uso de la barra foo a menos que uno quiera ejecutar todos los ejemplos/pruebas/viñetas: es útil tener la barra, pero no es necesario. Los requisitos de versión se pueden especificar y serán utilizados por R CMD check.

+0

Gracias Ben, que funcionó - simplemente no entendía las capacidades detrás del campo 'Suggests' obviamente. ¡Lo siento, es una cuestión de RTFM! – Pierre

3

Además, si la viñeta depende correctamente en ese paquete, no debe ser una declaración

% \VignetteDepends{...} 

en la viñeta en sí: Sweave, Part II: Package Vignettes, R News 3/2 (Oct. 2003), 21 - 24.

Sin embargo, su caso, posiblemente, es un poco diferente:

Yo uso if (require ("pkgxy")) sin % \\VignetteDepends{pkgxy} (Suggests: pkgxy en la DESCRIPCIÓN es necesario de todos modos) para algunas cosas que quiero s cómo pero donde no quiero obligar al usuario a tener instalados todos los paquetes instalados. Puse una caja al comienzo de la viñeta donde informo cuáles de esos paquetes están disponibles y si un paquete no está disponible cuando se construye la viñeta, se coloca un texto "pkgxy para hacer esto" en la viñeta.

El "introduction" vignette of package hyperSpec es un ejemplo (para averiguar cómo funciona en realidad, no solo necesita the .Rnw sino también some more definitions).

+0

¡Gracias por aclarar! El enlace a la "introducción" de hyperSpec está inactivo, quizás sea mejor comenzar [aquí] (http://hyperspec.r-forge.r-project.org/). – dardisco

+0

@dardisco: gracias - Arreglé el enlace roto. – cbeleites

Cuestiones relacionadas