Пространства имен являются средами, поэтому вы можете использовать точно такой же механизм.Поскольку R использует лексическую область видимости, родительский объект среды определяет, что будет видеть функция (т. Е. Как связаны свободные переменные).И точно так же, как пространство имен, вы можете присоединять окружения и искать их.
Таким образом, чтобы создать новое «пространство имен вручную», вы можете использовать что-то вроде
e <- new.env(parent=baseenv())
# use local(), sys.source(), source() or e$foo <- assignment to populate it, e.g.
local({
f <- function() { ... }
#...
}, e)
attach(e, name = "mySuperNamespace")
Теперь оно загружается и присоединяется так же, какпространство имен - так что вы можете использовать f
так же, как это было в пространстве имен.Пространства имен используют еще одну родительскую среду для разрешения импорта - вы можете сделать это тоже, если вам не все равно.Если вам нужно проверить свою прохладную среду, просто проверьте путь поиска, например, "mySuperNamespace" %in% search()
.Если вам нужна реальная среда, используйте as.environment("mySuperNamespace")