2011-03-10 12 views
20

Estoy un poco confundido acerca de esto. Tengo un paquete R que tiene una pequeña función (no una parte importante del paquete) en la que se llama a la función principal del paquete psych. ¿Cómo especifico esto correctamente en DESCRIPTION y NAMESPACE?Cómo usar correctamente las funciones de otros paquetes en un paquete R

Configuración Depends: psych en DESCRIPTION se asegura de que el paquete psych se cargue cada vez que se carga mi paquete. Esto funciona, pero parece redundante para una parte tan pequeña de mi paquete.

Configuración Suggests: psych y entrando en un require("psych") en la función es lo que hago ahora, sin embargo, esto no funciona si psych no está instalado, y parece ser el camino equivocado de hacer esto (escribir extensiones R dice que sugieren que se entiende principalmente por ejemplo).

Creo que necesito importar la función. Intenté configurar Imports: psych en DESCRIPTION y importFrom(psych,"principal") en NAMESPACE. Esto funciona, pero en una computadora que no tiene psych instalado da un error al cargar mi paquete.

+2

No se moleste, 'psych' es un gran paquete, y estoy seguro de que lo encontrará útil en algún momento (tiene muchas funciones de ayuda), aunque solo necesita una función. Buena suerte con PCA/FA! =) – aL3xa

Respuesta

18

La pregunta básica que debe responder es: "¿desea que la función esté disponible para todos los usuarios del paquete sin más esfuerzo?". En caso afirmativo, utilice las importaciones + las declaraciones de espacio de nombres apropiadas, si no, luego use sugiere e imprima un mensaje de error informativo si require("psych") devuelve FALSE.

No entiendo su queja relacionada con la importación que: "pero en una computadora que no tiene psych instalado da un error al cargar mi paquete". ¡Esto también es cierto si su paquete está en estado de dependencia!

+0

Gracias, muy esclarecedor y creo que sugiere que es el más apropiado en ese momento. Creo que cometí un error tonto con la importación, pensé que también se instalarán paquetes dependientes cuando instales un paquete de CRAN, pero supongo que esto también ocurre con los paquetes importados. (probado solo instalando desde un archivo comprimido) –

+0

Sí, los paquetes importados se descargan automáticamente cuando instala un paquete. – hadley

+0

Entonces, ¿por qué necesitamos 'importFrom' entonces? ¿Es S4 específico? – mlt

Cuestiones relacionadas