如何将环境变量很好地导入文档功能中?

时间:2018-07-18 12:32:14

标签: r

我正在使用以下方法开发R包:

pkgs <- c("devtools", "testthat", "roxygen2", "configr")

pkgs_miss <- pkgs[which(!pkgs %in% utils::installed.packages()[, 1])]
  if (length(pkgs_miss) > 0) {
    utils::install.packages(pkgs_miss)
  }

我的文件结构如下:

/ mypackage
    / inst
        /conf
           * config.yml, env_conf.R

    / man
    / packrat
    / R
      * myfun1.R, myfun2.R
    / tests

为了清楚和透明起见,我试图将所有环境变量都保留在env_conf.R(和config.yml)中,在那里我要通过{{1}从.Renviron导入这些环境变量},如下所示:

config.yml

此外,我要将这些环境变量导入production: USERNAME: Sys.getenv("MYUSERNAME") PASSWORD: Sys.getenv("MYPASSWORD") HOST: Sys.getenv("MYHOST")

env_conf.R

现在,我想通过configuration <- configr::read.config(system.file('inst/conf', 'config.yml', package='mypackage')) USERNAME <– eval(parse(text = configuration$production$USERNAME)) PASSWORD <– eval(parse(text = configuration$production$PASSWORD)) HOST <– eval(parse(text = configuration$production$HOST)) env_conf.R中的以下方式在myfun1.R中的函数myfun1中使用这些变量:

config.yml

是否可以通过给定所需上下文的方式将这些变量导入myfun1.R? 我尝试在文档功能myfun1中使用#' Query MySQL Database #' @param some_statement #' @return sql output #' @importFrom DBI dbConnect dbGetQuery #' @export myfun1 <- function(some_statement){ con <- DBI::dbConnect( RMySQL::MySQL(), username = USERNAME, password = PASSWORD, host = HOST, port = 3306 ) result <- DBI::dbGetQuery(con, some_statement) result } 的不同组合,但未成功,多数情况下会导致system.file('inst/conf', 'env_conf.R', package='mypackage')

但是不知道是否还有更简洁的方法。感谢任何见解!

0 个答案:

没有答案