编写R包:加载包时自动设置环境变量
Writing an R package: automatically set environment variables when the package is loaded
我正在开发一个 R 包,我希望我的一个函数的行为取决于环境变量 ENV_VAR
,其默认值为 foo
,而用户也可以更改这 ENV_VAR
在 运行 时间使用 Sys.setenv(ENV_VAR = 'bar')
。我试过这个
Sys.setenv(ENV_VAR = 'foo')
#' @export
my_funciton <- function(){
v <- Sys.getenv(ENV_VAR)
if (v == 'foo') ... else if (v == 'bar') ...
}
但是当我在 RStudio 中构建并重新加载包时,我 运行 Sys.getenv(ENV_VAR)
给出 ""
,即加载包时,它没有设置环境 ENV_VAR
为 foo
。可以预见 my_function
也会引发错误:Error in Sys.getenv(ENV_VAR) : object 'ENV_VAR' not found
正如@joran 评论的那样,.onLoad
函数是我需要的。
我正在开发一个 R 包,我希望我的一个函数的行为取决于环境变量 ENV_VAR
,其默认值为 foo
,而用户也可以更改这 ENV_VAR
在 运行 时间使用 Sys.setenv(ENV_VAR = 'bar')
。我试过这个
Sys.setenv(ENV_VAR = 'foo')
#' @export
my_funciton <- function(){
v <- Sys.getenv(ENV_VAR)
if (v == 'foo') ... else if (v == 'bar') ...
}
但是当我在 RStudio 中构建并重新加载包时,我 运行 Sys.getenv(ENV_VAR)
给出 ""
,即加载包时,它没有设置环境 ENV_VAR
为 foo
。可以预见 my_function
也会引发错误:Error in Sys.getenv(ENV_VAR) : object 'ENV_VAR' not found
正如@joran 评论的那样,.onLoad
函数是我需要的。