R 在不调用库的情况下使用 %within% 运算符(lubridate)
R use %within% operator without calling library(lubridate)
我正在编写一个使用一些 lubridate
函数的函数。
但是,我不确定如何从 lubridate 导入函数 %within%
。通常这很容易,因为我只使用 lubridate::function。当我尝试使用 %within% 运算符时,这不起作用。有什么方法可以在不加载整个包本身的情况下使用包中的运算符吗?
是的。这里的问题是 %within%
是一个特殊符号,也是一个函数。在 R 中,几乎一切都是函数。例如,当您执行 2 + 2
时,R 实际上将其解释为
`+`(2, 2)
查看 Hadley Wickham 的 this section from "Advanced R" 以了解此详细信息。
因此,对您的问题最直接的回答是:对 %within%
函数使用相同的逻辑,但转义 %
符号并直接为函数指定参数 a 和 b。
lubridate::`%within%`(a, b)
如果您自己开发包,您可以使用 roxygen2
记录使用 %within%
的函数。您需要做的就是:
#' @title Your Nice Function
#' @description This is a description...
#' @param a Your first param
#' @param b Your second param
#' @importFrom lubridate \%within\%
your_nice_function <- function(a, b) {
...
}
就是这样,因为你是说这个函数从 lubridate 导入特定函数 %within%
,而不加载整个 lubridate 包。
但是,如果您只想以最“熟悉”的方式使用脚本中的函数,也许最好的方法是:
`%within%` <- lubridate::`%within%`
这样做实际上是将函数复制到同名的局部变量。
我正在编写一个使用一些 lubridate
函数的函数。
但是,我不确定如何从 lubridate 导入函数 %within%
。通常这很容易,因为我只使用 lubridate::function。当我尝试使用 %within% 运算符时,这不起作用。有什么方法可以在不加载整个包本身的情况下使用包中的运算符吗?
是的。这里的问题是 %within%
是一个特殊符号,也是一个函数。在 R 中,几乎一切都是函数。例如,当您执行 2 + 2
时,R 实际上将其解释为
`+`(2, 2)
查看 Hadley Wickham 的 this section from "Advanced R" 以了解此详细信息。
因此,对您的问题最直接的回答是:对 %within%
函数使用相同的逻辑,但转义 %
符号并直接为函数指定参数 a 和 b。
lubridate::`%within%`(a, b)
如果您自己开发包,您可以使用 roxygen2
记录使用 %within%
的函数。您需要做的就是:
#' @title Your Nice Function
#' @description This is a description...
#' @param a Your first param
#' @param b Your second param
#' @importFrom lubridate \%within\%
your_nice_function <- function(a, b) {
...
}
就是这样,因为你是说这个函数从 lubridate 导入特定函数 %within%
,而不加载整个 lubridate 包。
但是,如果您只想以最“熟悉”的方式使用脚本中的函数,也许最好的方法是:
`%within%` <- lubridate::`%within%`
这样做实际上是将函数复制到同名的局部变量。