【发布时间】:2021-03-09 15:51:10
【问题描述】:
我正在 R 中构建一个大型代码库,该代码库通过许多嵌套的用户定义函数使用矢量化。这些辅助功能大体上是用它们自己的 R 脚本编写的,用于调试和维护目的。我想在特定环境中获取其中一些脚本,而不将这些函数调用到全局环境中。
我正在努力使 main.R 文件尽可能干净和易于理解,以便有脚本在幕后完成肮脏的工作。
在下面的示例中,全局环境将填充有f_foobar(这是正确的),但一旦我调用函数f_foobar,也会填充f_foo 和f_bar。
有没有一种优雅的方式在临时环境中容纳这些辅助功能(例如f_foo 和f_bar)?
例如在file_foo.R中:
f_foo <- function() {
return('a')
}
在file_bar.R中:
f_bar <- function() {
return('b')
}
在 file_foobar.R 中:
f_foobar <- function() {
source('file_foo.R')
source('file_bar.R')
value_foo <- f_foo()
value_bar <- f_bar()
c(value_foo, value_bar) %>% return
}
在 main.R 中:
source('file_foobar.R')
main_result <-f_foobar()
【问题讨论】:
-
"有没有优雅的方法..." 是的,创建一个包。
标签: r function environment scoping