如何构建我的 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 包。我正处于想要编写一些可视化数据的函数的地步。当我对某些配置不满意时,我希望能够快速调整我所有功能的样式。这方面的例子是:
- 字体大小
- Primary/secondary 颜色
- Green/Orange/Red 颜色
因为,假设我有 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)
我正在开发我自己的 R 包。我正处于想要编写一些可视化数据的函数的地步。当我对某些配置不满意时,我希望能够快速调整我所有功能的样式。这方面的例子是:
- 字体大小
- Primary/secondary 颜色
- Green/Orange/Red 颜色
因为,假设我有 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)