superponer - Espacios de nombres en paquetes R
superponer graficas en r (5)
¿Cómo aprende la gente sobre dar un espacio de nombres a un paquete R? Considero que la documentación en "Extensiones R" está bien, pero realmente no entiendo lo que sucede cuando se importa o se exporta una variable. Necesito una guía sobre estas directivas.
¿Cómo decides lo que se exporta? ¿Es todo lo que realmente no debería requerir la sintaxis pkg ::: var? ¿Qué pasa con las importaciones?
¿Las importaciones hacen que sea más fácil garantizar que su uso de otras funciones del paquete no se confunda cuando los nombres de las funciones se superponen?
¿Existen consideraciones especiales para las clases de S4?
Los paquetes que estoy familiarizado con el uso de espacios de nombres como sp y rgdal son bastante complicados. ¿Existen ejemplos simples que puedan aclarar las cosas?
La explicación más clara que he leído está en el Software de análisis de datos de John Chambers : Programación con R , página 103. No conozco ninguna explicación en línea gratuita que sea mejor que la que ya se encuentra en el manual de Extensiones R
Pocos años después aquí ...
Consolidé los resultados de Chambers, otras publicaciones de y muchos retoques en R: http://blog.obeautifulcode.com/R/How-R-Searches-And-Finds-Stuff/
Esto es menos sobre la implementación de NAMESPACE / IMPORTS / DEPENDS y más sobre el propósito de estas estructuras. Responde algunas de tus preguntas.
También puedes elegir un paquete pequeño y fácil y seguirlo.
Miré de manera semi-aleatoria el digest que es uno de mis paquetes más pequeños. Carga una biblioteca dinámica (pequeña) y exporta un símbolo, la función digest()
. Aquí está el contenido del archivo NAMESPACE:
## package has dynamic library
useDynLib(digest)
## and one and only one core function
export(digest)
Eche un vistazo al resto de los archivos de origen y tal vez intente leer Writing R Extensions junto con mirar el ejemplo y hacer algunos experimentos.
Tengo un inicio en una respuesta en la wiki de devtools: http://adv-r.had.co.nz/Namespaces.html