如何向包中添加中缀函数?

How to add an infix function to a package?

我想向包中添加一个中缀函数,但 %% 向我提出了挑战。

我也发现了 this solution but unfortunately it doesn't explain where exactly the line export("%IN%") should be added. I didn't get any smarter from that 个问题。由于问题已经五年了,我决定提出一个新问题。

考虑与第一个链接问题中相同的函数。

"%IN%" <- function(x, table) x & match(x, table, nomatch = 0) > 0

我通常根据这个粗略的模板编写一个 <myfun>_function.R 文件到我的包中添加一个新功能。

#' Title
#'
#' \code{%IN%} does this and that
#' @param x texttext    
#' @param table texttext
#' @return texttext
#' @export
#' @examples
#' 1:5 %IN% 1:3
"%IN%" <- function(x, table) x & match(x, table, nomatch = 0) > 0

因此,我会将名为 "`%IN%`_function.R" 的文件保存到包目录 X.

R 文件夹中

然后在setwd("./X")我运行这几行代码

library(digest)
R.utils::reassignInPackage("digest", "digest", mydigest)
roxygen2::roxygenize()

(我从 得到 mydigest 的地方)。

在终端的最后,我用 R CMD build X 创建了包。

那么,export("%IN%")行到底添加在哪里呢?

根据评论,诀窍是按以下顺序执行:

  1. 照常编写函数的*.R文件,任意命名
  2. 运行 roxygenize()
  3. 在包文件夹中手动编辑生成的 NAMESPACE 文件,添加一行 export("%IN%")
  4. 运行 R CMD build <package name> 在终端
  5. 或许更新版本号
  6. 安装