как добавлять функции в существующую среду

Можно ли использовать env () в качестве замены пространств имен, и как вы проверяете, существует ли уже среда, прежде чем добавлять в нее функции ?

Это связано с этим вопросом и предложением Брендана Как организовать большие программы R? Я понимаю точку зрения Дирка в этом вопросе, однако для разработки иногда нецелесообразно помещать функции в пакеты.

РЕДАКТИРОВАТЬ: Идея состоит в том, чтобы имитировать пространства имен в файлах и, следовательно, иметь возможность загружать разные файлы независимо. Если файл был ранее загружен, среду не нужно создавать, просто добавляйте в нее.

Спасибо за идеи

РЕДАКТИРОВАТЬ: Предположительно, приведенный ниже код будет эквивалентом пространств имен на других языках: -

 # 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}

6
задан Community 23 May 2017 в 11:58
поделиться