Предположим, у меня есть этот файл с именем "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"