如果我在普通的R脚本中使用配置文件,我会这样做:
config.R
a <- 1
b <- 2
c <- 3
RSCRIPT
source('config.R')
d = a+b+c
Do stuff
我如何在R包中做到这一点?我可以保留一个配置文件并将其源于R函数吗?或者我应该在每个函数中包含a,b,c吗?什么是最佳做法?
答案 0 :(得分:1)
如果配置应包含在R包本身中:
将配置文件存储在/**
* Fit SVGs to their first text child's viewBox
*/
fitSvgTextElements() {
const elements = document.querySelectorAll('svg.text');
for( const el of elements ) {
const box = el.querySelector('text').getBBox();
el.setAttribute('viewBox', `${box.x} ${box.y} ${box.width} ${box.height}`);
}
}
文件夹中。
安装软件包后,配置包含在软件包位置(inst/configs
)的configs
文件夹中
使用软件包功能中的软件包安装目录来获取配置文件:
libPaths()
myPackage::load_config <- function(config_file_name = "default_config.R",
config_file_path = system.file("configs", package = getPackageName(), mustWork = TRUE))
{
env <- new.env() # all values are then contained in an separate environment
# env <- globalenv() # to make the variables visible in the client's environment
config_file_FQN <- file.path(config_file_path, config_file_name)
source(config_file_FQN, local = env, keep.source = TRUE)
return(env)
}
或将环境与配置的变量一起存储在包中 作为程序包全局变量,请参见以下示例代码(很抱歉,在这里无法太多说明): https://github.com/aryoda/tryCatchLog/blob/master/R/zzz.R#L47
答案 1 :(得分:0)
1:一个选项是将这些作为您的函数中的默认值。如在
my_fun <- function(..., a = 1, b = 2)
等等。
2:鉴于您在软件包中拥有的是函数,您可以轻松地在主函数中声明它们。因此,这些被调用的其他函数可以访问它们。
3:另一个选择是将它们保留为功能。
a <- function()
a <- 1
现在,您可以随时拨打a()
,如a() + 2
。
4:另一种选择是使用环境。我没有那么多使用。我认为你会发现this很有用,特别是关于包状态的部分。