【发布时间】:2014-05-18 17:26:46
【问题描述】:
我已更新到 roxygen2 v4.0.0,现在正尝试按照 here 的指示将 @S3method 和 @method 命令转换为 @export 命令。除了与打印相关的方法之外,这似乎对我的所有方法都有效。
这是一个说明我的问题的玩具示例(我理解示例的愚蠢性)。这是 .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) }
这是由 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}
我对@export 的使用似乎适用于摘要方法(注意\method()),但不适用于打印方法(注意没有\method(),只有print.zzzTest)。我还成功地将 @export 用于其他 .R 文件中的其他几种方法。我的问题似乎只出现在 print 方法上。
有人能指出我哪里出错了吗?提前感谢您对此问题的任何帮助。
不管怎样,我使用的是 R 3.1.0、RStudio 0.98.501 和 roxygen2 4.0.0。
更新 1: 在命名空间中有一个 export(print.zzzTemp) 但没有一个 S3method(print,zzzTemp) ...即,与 ZNK 相同的问题(在 cmets 中)。
更新 2: 我将确切的 .R 文件复制到另一个包中,对该包进行了 roxygenized,然后正确创建了 .Rd 文件(和相应的命名空间)。这意味着我在两个包之间有一些与 roxygen2 相关的“开关”不同,但我似乎无法隔离差异或找到这样的“开关”(我相信我只是通过 RStudio 中的项目选项控制了 roxygen )。
【问题讨论】:
-
我遇到了类似的问题,只是我没有记录我的打印方法。我的命名空间已从 S3method(print, myClass) 更改为 export(print.myClass)。我正在考虑就此提交错误报告。