我希望使用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)
是否有更好的替代品?
答案 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"