如何为 R 包中的函数参数设置别名?
How to set aliases for function arguments in an R package?
我正在用 R 开发一个相对简单的包,其中包含几个可视化函数。现在我有一个名为 make_a_bargraph()
的函数,它有一个 colour
参数。我想要的是它也接受 color
(美式拼写)作为有效参数。所以基本上就像 ggplot
一样也处理它的 geoms。
理想情况下我们应该有这样的函数:
make_a_bargraph <- function(colour) {
#' @desc function to do something with the colour-argument
#' @param colour the colour to be printed
#' @return a printed string
print(colour)
}
# with the 'regular' call:
make_a_bargraph(colour = "#FF0000")
# and the desired output:
[1] FF0000
# but also this possibility with US spelling:
make_a_bargraph(color = "#FF0000")
# and the same desired output:
[1] FF0000
如何实现这一目标?
一种方法是在函数声明中使用 ...
:
make_a_bargraph <- function(colour, ...) {
dots <- list(...)
if ("color" %in% names(dots)) {
if (missing(colour)) {
colour <- dots[["color"]]
} else {
warning("both 'colour=' and 'color=' found, ignoring 'color='")
}
}
print(colour)
}
make_a_bargraph(colour="red")
# [1] "red"
make_a_bargraph(color="red")
# [1] "red"
make_a_bargraph(colour="blue", color="red")
# Warning in make_a_bargraph(colour = "blue", color = "red") :
# both 'colour=' and 'color=' found, ignoring 'color='
# [1] "blue"
您还可以查看 ggplot2::standardise_aes_names
及其周边,了解 ggplot2
是如何做到的。
我正在用 R 开发一个相对简单的包,其中包含几个可视化函数。现在我有一个名为 make_a_bargraph()
的函数,它有一个 colour
参数。我想要的是它也接受 color
(美式拼写)作为有效参数。所以基本上就像 ggplot
一样也处理它的 geoms。
理想情况下我们应该有这样的函数:
make_a_bargraph <- function(colour) {
#' @desc function to do something with the colour-argument
#' @param colour the colour to be printed
#' @return a printed string
print(colour)
}
# with the 'regular' call:
make_a_bargraph(colour = "#FF0000")
# and the desired output:
[1] FF0000
# but also this possibility with US spelling:
make_a_bargraph(color = "#FF0000")
# and the same desired output:
[1] FF0000
如何实现这一目标?
一种方法是在函数声明中使用 ...
:
make_a_bargraph <- function(colour, ...) {
dots <- list(...)
if ("color" %in% names(dots)) {
if (missing(colour)) {
colour <- dots[["color"]]
} else {
warning("both 'colour=' and 'color=' found, ignoring 'color='")
}
}
print(colour)
}
make_a_bargraph(colour="red")
# [1] "red"
make_a_bargraph(color="red")
# [1] "red"
make_a_bargraph(colour="blue", color="red")
# Warning in make_a_bargraph(colour = "blue", color = "red") :
# both 'colour=' and 'color=' found, ignoring 'color='
# [1] "blue"
您还可以查看 ggplot2::standardise_aes_names
及其周边,了解 ggplot2
是如何做到的。