R 如何为包装ggplot()的自定义函数编写可选参数?
我有一个一般性的问题,我找不到满意的答案。我正在构建一组可视化功能,我想让用户在使用它们时具有灵活性。例如,我想将errorbars是否应包含在条形图中,或者R 如何为包装ggplot()的自定义函数编写可选参数?,r,function,ggplot2,arguments,optional-arguments,R,Function,Ggplot2,Arguments,Optional Arguments,我有一个一般性的问题,我找不到满意的答案。我正在构建一组可视化功能,我想让用户在使用它们时具有灵活性。例如,我想将errorbars是否应包含在条形图中,或者geom_text()中的标签是否以百分比或十进制为单位,这是可选的 如果我们想一想ggplot()中的典型代码结构,我们就可以用+分隔元素。因此,如果我想允许可选构造,我可能需要“打开”或“打开”整个geoms(例如,如果用户不想在绘图中使用错误条,则完全忽略geom\u errorbar()),或者在geoms中进行调整(例如,在geo
geom_text()
中的标签是否以百分比或十进制为单位,这是可选的
如果我们想一想ggplot()
中的典型代码结构,我们就可以用+
分隔元素。因此,如果我想允许可选构造,我可能需要“打开”或“打开”整个geom
s(例如,如果用户不想在绘图中使用错误条,则完全忽略geom\u errorbar()
),或者在geom
s中进行调整(例如,在geom\u text()中更改唯一的标签
参数)
将标签转换为百分比或保留小数)
我希望我的问题不会带来太多基于观点的答案,而是让人们在使用自定义函数包装ggplot()
时,列出编码可选参数的标准/典型方式
例子
我想出了一个我不喜欢的解决办法。我认为这使得代码很长,很难阅读。我也不能说它在计算上是否有效。
假设我想为条形图构建一个自定义函数。有几件事我希望它们是“可调整的”:
reorder\u cols
参数)x轴标签
参数)add\u errorbar
)show_in_percents
)条形图()
的相关参数,我将每个可选代码分配到一个变量中,并使用一个条件来确定应该包含哪段代码
库(tidyverse)
图书馆(扫帚)
#>警告:包“broom”是在R版本4.0.3下生成的
条形图这不会试图回答所有的问题(因为有几个问题),只是为了展示你可以利用的原理。退房
其思想是创建一个包含所有ggplot对象(如aes、geom、scale)的列表。返回的NULL
对象将被简单地丢弃。这就是全部的美
我删除了这个量表,因为它有点难以理解您想要实现的目标。这个想法非常相似。实际上,我把整个问题归结为我认为是问题的要点
库(tidyverse)
bar_chart@emman如果你想知道百分比标签-这是你精确编码的结果!非常感谢。这就提出了几个后续问题。首先,当我推断想要打开或关闭整个geom
(例如geom\u errorbar()
)时,如果(se)geom\u errorbar(…)
,可以通过实现,但是在geom
中调整参数需要单独的条件赋值(例如my\u label
)?@emman我认为这在很大程度上取决于你函数的设计,以及你希望用户能够调整的程度。我链接的那本书实际上解决了这个问题。另一个选择可能是使用“…”我明白了,好吧,我会更彻底地阅读这本书。第二个问题与您选择使用有关,新的简单答案是{{{{is reserved for in-specific tidyverse objects,如aes()-虽然你完全正确,但这可能过于简单化。我应该开始使用reprex。感谢你回答这个错误示例。我更新了问题中的代码。@tjebo,我已经更新了代码,这次使用的是reprex:-)