如何构建我的 R 包以便我可以快速调整一些样式更改(例如 main colors/font 大小)

How do I build my R package such that I can quickly adjust some style changes (e.g. main colors/font size)

我正在开发我自己的 R 包。我正处于想要编写一些可视化数据的函数的地步。当我对某些配置不满意时,我希望能够快速调整我所有功能的样式。这方面的例子是:

因为,假设我有 graphs.R:

graph_a <- function(font_size = 9, primary_color = "#ffffff") { ... }

graph_b <- function(font_size = 9, primary_color = "#ffffff") { ... }

graph_c <- function(font_size = 9, primary_color = "#ffffff") { ... }

如果我想稍微增加字体大小,更改所有预定义值会很麻烦。我正在考虑使用全局常量,但在 Google 上找不到任何相关内容,而且使用配置文件似乎也不是正确的策略。首先想到的是在 graphs.R 的第一行添加以下内容:

FONT_SIZE <- 9
PRIMARY_COLOR <- "#ffffff"

但是如果我想在我的包裹中使用这些怎么办?

如果您在包中定义全局变量,它们将可用于包中的所有函数,而不仅仅是同一源文件中的函数。所以这不是问题。 (尽管如果一个常量的值取决于其他常量,则必须考虑源文件的处理顺序。这可以通过 DESCRIPTION 中的 Collate: 字段控制。)

像您一样使用全局变量的缺点是用户很难更改它们。安装包后,这些值将被锁定。 (通过解锁和替换仍然可以改变它们,但这并不容易。)

一种相当方便的方法是拥有一个环境来保存您的样式设置,并可选择设置和获取它们的函数。例如,您的代码可能如下所示:

defaultStyle <- new.env(parent = emptyenv())
defaultStyle$FONT_SIZE <- 9
defaultStyle$PRIMARY_COLOR <- "#ffffff"

graph_a <- function(font_size = style$FONT_SIZE, 
                    primary_color = style$PRIMARY_COLOR,
                    style = defaultStyle) { ... }

然后用户可以创建一种完全不同的样式并将其放入一个参数中,例如

graph_a(style = my_style)