首页 > 解决方案 > 使用源函数加载函数

问题描述

我在 R 中有一个具有不同功能的脚本。我想使用 source() 将它们加载到另一个脚本中,但我只想加载其中一个。我知道可以选择要获取的行数,但我想使用函数的名称。

例如,假设我有一个文件“script.R”,其中包括函数“fun1”、“fun2”和“fun3”。如何使用源代码和函数名称在我的新脚本中加载“fun1”?

提前谢谢了!

标签: r

解决方案


假设我有一个名为“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"

推荐阅读