загрузка функции с использованием функции источника - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть скрипт на R с разными функциями. Я хочу использовать source () для загрузки их в другой скрипт, но я хочу загрузить только один из них. Я знаю, что можно выбрать номера строк, которые вы хотите получить, но я хотел бы использовать имя функции.

Например, предположим, у меня есть файл «script.R», включающий функции "fun1", "fun2" и "fun3". Как мне загрузить «fun1» в моем новом скрипте, используя источник и имя функции?

Заранее большое спасибо!

1 Ответ

0 голосов
/ 27 февраля 2020

Предположим, у меня есть этот файл с именем "01_script.R":

hello_world <- function() print("Hello world")

goodbye_world <- function() print("Goodbye world")

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

source_func <- function(file, func)
{
  tmp_env <- new.env()
  source(file, local = tmp_env)
  assign(func, get(func, envir = tmp_env), envir = parent.frame())
}

Так что я могу сделать следующее:

ls()
#> [1] "source_func"
source_func("01_script.R", "hello_world")
ls()
#> [1] "hello_world" "source_func"
hello_world()
#> [1] "Hello world"
goodbye_world()
#> Error in goodbye_world() : could not find function "goodbye_world"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...