6

作为一个简单而具体的例子:

#' Inverse Value Matching
#' 
#' Complement of \code{%in%}. Returns the elements of \code{x} that are
#' not in \code{y}.
#' @usage x %nin% y
#' @param x a vector
#' @param y a vector
#' @export
"%nin%" <- function(x, y) {
  return( !(x %in% y) )
}

但是,当我尝试构建一个包时,该功能似乎被忽略了,并且没有生成任何文档。

在http://cran.r-project.org/doc/manuals/r-release/R-exts.html#Documenting-functions似乎有一个关于二进制中缀函数的单行简介,但我很难解析它的时间,以及它对 Roxygen 文档的影响。

4

2 回答 2

8

您需要转义%使用部分中的 s。另外,我认为您可能需要指定一个rdname

#' Inverse Value Matching
#' 
#' Complement of \code{%in%}. Returns the elements of \code{x} that are
#' not in \code{y}.
#' @usage x \%nin\% y
#' @param x a vector
#' @param y a vector
#' @export
#' @rdname nin
"%nin%" <- function(x, y) {
  return( !(x %in% y) )
}

这是我在个人包中的一个功能。我认为我从未真正使用过该功能,但roxygenize确实创建了一个帮助文件并且包通过了R CMD check.

#' percent in
#' 
#' calculate the percentage of elements of \code{table} that are in \code{x}
#' 
#' @param x vector or NULL: the values to be matched
#' @param table vector or NULL: the values to be matched against
#' @return percentage of elements of \code{x} that are in \code{table}
#' @author gsee
#' @usage x \%pctin\% table
#' @examples
#' letters[1:10] %pctin% letters[1:3] # 30% of the second arg ar in the first
#' @export
#' @rdname PctIn
"%pctin%" <- function(x, table) length(x[x %in% table])/length(x)
于 2012-12-11T23:10:37.393 回答
1

我在使用roxygen(说到roxygennot roxygen2)和中缀运算符时遇到了困难。以下是我的设置(R2.15.1、0.1-3 roxygen)。

第一个解决方案:编辑Rd每个中缀运算符(应该是 )的文件,并在,和部分中grapes ... grapes.Rd的 each 用一个斜杠转义。%\alias\usage\name

第二种解决方案:在中缀运算符的文档中指定标签 @name 和 @usage 并将%. 这是一个例子:

##' Concatenates two strings
##'
##' @name \%+\%
##' @usage \%+\%(x, y)
##' @title Concatenation operator.
##' @param a String.
##' @param b String.
##' @return Same as paste0(a, b).
"%+%" <- function(a, b) paste(a, b, sep = "")
于 2014-03-08T10:47:24.240 回答