R 配置文件中的自引用值

Self-referential values in an R config file

使用 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")

代码:

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) 更好的替代品?

我遇到了同样的问题,我已经围绕配置和胶水编写了一个包装器。 该包名为 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"