R配置文件中的自引用值

时间:2019-05-23 23:21:26

标签: r config

我希望使用config包来引用其他元素, 就像path_file_a引用path_directory的方式一样。

工作目录中的

config.yml文件:

default:
  path_directory  : "data-public"
  path_file_a     : "{path_directory}/a.csv"
  path_file_b     : "{path_directory}/b.csv"
  path_file_c     : "{path_directory}/c.csv"
  # recursive     : !expr file.path(config::get("path_directory"), "c.csv")

  sub:
    -
      name   : sub1
      content: 111
    -
      name   : sub2
      content: 222

代码:

config <- config::get()

config$path_file_a
# Returns:  "{path_directory}/a.csv"

glue::glue(config$path_file_a, .envir = config)
# Returns: "data-public/a.csv"

我可以在config$path_file_a返回的值上使用类似glue::glue()的名称。
但是我更希望值已经被替换,因此config$path_file_a包含实际值(而不是值的模板)。

如您所料,取消对recursive行的注释会创建一个无限的自引用循环。

glue::glue(config$path_file_a, .envir = config)是否有更好的替代品?

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题,并且为config和胶水写了一个包装器。 该程序包称为gonfig,并已提交给CRAN。

有了它,您将拥有:

config.yml

default:
  path_directory  : "data-public"
  path_file_a     : "{path_directory}/a.csv"
  path_file_b     : "{path_directory}/b.csv"
  path_file_c     : "{path_directory}/c.csv"

在您的R脚本中:

config <- gonfig::get()
config$path_file_c
#> "data-public/c.csv"