Определить пространство имен функции в анонимной функции - PullRequest
0 голосов
/ 18 мая 2018

Мой вопрос очень похож на этот: Как вы определяете пространство имен функции?

Мы можем получить среду функции с помощью environment и, возможно,объединить его с getNamespaceName:

environment(mean)
#> <environment: namespace:base>
getNamespaceName(environment(mean))
#> [1] "base"

Я хотел бы добиться чего-то похожего для анонимной функции:

anon_f <- function(x) mean(x)

Среда для этой функции, очевидно, является глобальной средой, и естьнет пространства имен:

environment(anon_f)
#> <environment: R_GlobalEnv>

Можно ли каким-то образом "войти" в анонимную функцию и получить пространство / пространство имен функции внутри анонимной функции?

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете использовать библиотеку pryr, которая представляет собой набор инструментов для вычислений на языке.

library(pryr)
f <- fget(fun_calls(anon_f))
getNamespaceName(environment(f))
# [1] "base"

Для множественных вызовов в теле функции вам придется использовать цикл.Я не пользуюсь этой библиотекой регулярно, поэтому возможен еще более простой способ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...