r - 使用源函数加载函数
问题描述
我在 R 中有一个具有不同功能的脚本。我想使用 source() 将它们加载到另一个脚本中,但我只想加载其中一个。我知道可以选择要获取的行数,但我想使用函数的名称。
例如,假设我有一个文件“script.R”,其中包括函数“fun1”、“fun2”和“fun3”。如何使用源代码和函数名称在我的新脚本中加载“fun1”?
提前谢谢了!
解决方案
假设我有一个名为“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"