¿Es posible utilizar env()
como sustituto de los espacios de nombres, y cómo comprobar si ya existe un entorno antes de agregarle funciones?cómo agregar funciones en un entorno existente
esto está relacionado con esta cuestión, y la sugerencia de Brendan How to organize large R programs? entiendo el punto de Dirk en esa pregunta, sin embargo, para el desarrollo a veces es poco práctico para poner funciones en paquetes.
EDITAR: La idea es imitar los espacios de nombres en los archivos y, por lo tanto, poder cargar diferentes archivos de forma independiente. Si un archivo se ha cargado previamente, entonces no es necesario crear el entorno, solo agregarlo a.
Gracias por las ideas
EDIT: De modo que probablemente este código de abajo sería el equivalente de espacios de nombres en otros idiomas: -
# how to use environment as namespaces
# file 1
# equivalent of 'namespace e' if (!(exists("e") && is.environment(e))) { e <- new.env(parent=baseenv()) }
e$f1 <- function(x) {1}
# file 2
# equivalent of 'namespace e' if (!(exists("e") && is.environment(e))) { e <- new.env(parent=baseenv()) }
e$f2 <- function(x) {2}
Organizo * mucho * de mi código en paquetes, pero utilizo el paquete 'devtools' de Hadley para cargarlo en un entorno. Esto esencialmente logra lo que describes, pero también tengo la ventaja adicional de que puedo construir y volver a usar el paquete si quiero. (En otras palabras, no necesito reconstruir continuamente el paquete mientras desarrollo). – Andrie