roxygen2:导出打印方法的问题

D O*_*gle 5 r roxygen2

我已经更新至V4.0.0 roxygen2和我现在正在尝试转换@ S3method和@method命令@export以下的指示命令在这里.这似乎对我的所有方法都有效,除了那些与print相关的方法.

这是一个玩具示例,说明了我的问题(我理解示例的愚蠢).这是.R文件......

#' Test.
#' 
#' Test.
#'@aliases zzzTest print.zzzTest summary.zzzTest
#'@param v A numeric vector.
#'@param x A \code{zzzTest} object.
#'@param object A \code{zzzTest} object.
#'@param \dots Additional arguments for the S3 methods.
#'@return A \code{zzzTest} object.
#'@keywords manip
#'@examples
#'z <- zzzTest(runif(10,1,2))
#'print(z)
#'summary(z)
#'@rdname zzzTest
#'@export zzzTest
zzzTest <- function(v) {
  tmp <- log(v)
  class(tmp) <- "zzzTest"
}

#'@rdname zzzTest
#'@export
print.zzzTest <- function(x,...) { print(x, ...) }

#'@rdname zzzTest
#'@export
summary.zzzTest <- function(object,...) { summary(object) }
Run Code Online (Sandbox Code Playgroud)

这是由roxygenising导致的.Rd文件...

% Generated by roxygen2 (4.0.0): do not edit by hand
\name{zzzTest}
\alias{print.zzzTest}
\alias{summary.zzzTest}
\alias{zzzTest}
\title{Test.}
\usage{
zzzTest(v)

print.zzzTest(x, ...)

\method{summary}{zzzTest}(object, ...)
}
\arguments{
\item{v}{A numeric vector.}

\item{x}{A \code{zzzTest} object.}

\item{object}{A \code{zzzTest} object.}

\item{\dots}{Additional arguments for the S3 methods.}
}
\value{
A \code{zzzTest} object.
}
\description{
Test.
}
\examples{
z <- zzzTest(runif(10,1,2))
print(z)
summary(z)
}
\keyword{manip}
Run Code Online (Sandbox Code Playgroud)

我对@export的使用似乎适用于summary方法(注意\ method()),但不适用于print方法(注意没有\ method(),只有print.zzzTest).我也成功地将@export用于其他.R文件中的其他几种方法.我的问题似乎只出现在print方法中.

有人能指出我哪里错了吗?提前感谢您对此问题的任何帮助.

值得一提的是,我使用的是R 3.1.0,RStudio 0.98.501和roxygen2 4.0.0.

更新1:命名空间中有一个导出(print.zzzTemp)但不是S3method(print,zzzTemp)...即,与ZNK(在注释中)相同的问题.

更新2:我将确切的.R文件复制到另一个包中,对该包进行了roxygen化,并正确创建了.Rd文件(和相应的命名空间).这意味着我在两个软件包之间有一些与roxygen2不同的"开关",但我似乎无法隔离差异或找到这样一个"开关"(我相信我只能通过RStudio中的项目选项控制roxygen) ).

ZNK*_*ZNK 8

我找到了解决问题的方法(在上面的评论中),它可能适用于你的问题.在v3.0.0的NEWS.md文件中,提到@method不需要标签,因为roxygen2会弄清楚它,但是在极少数情况下它是可用的,而roxygen2不能这样做.我的解决方案

#' @method print myClass    
#' @export    
print.myClass <- function(x) print("myClass")
Run Code Online (Sandbox Code Playgroud)

这让我回到了S3method(print, myClass)我的NAMESPACE文件中.