r语言 - roxygen2:输出打印方法的问题



我已经更新到roxygen2 v4.0.0,现在正试图按照这里的说明将@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) }

这是氧化生成的。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文件中的其他几个方法。我的问题似乎只发生在打印方法上。

有人能指出我哪里错了吗?提前感谢您对这个问题的帮助。

为了它的价值,我使用R 3.1.0, RStudio 0.98.501和roxygen2 4.0.0。

UPDATE 1:在命名空间中有一个export(print.zzzTemp)但是没有一个S3method(print,zzzTemp)…也就是说,和ZNK一样的问题(在评论中)。

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

我已经为我的问题找到了解决方案(在上面的评论中),它可能对你的工作。新闻报道。在v3.0.0版本的md文件中,提到不需要@method标记,因为roxygen2会找出它,但是在roxygen2不能这样做的极少数情况下,它仍然可用。我的解决方案:

#' @method print myClass    
#' @export    
print.myClass <- function(x) print("myClass")

这让我返回了命名空间文件中的S3method(print, myClass)

代码的第16行

#'@export zzzTest

必须是

#'@export

正如Hadley在这个链接中提到的。

您可能还需要删除@export的第二个和第三个实例。在构建/检查之前,不要忘记做devtools::document()

在我添加@useDynLib pkg-name标记之前,我上面概述的代码对我有效。然后,我不得不求助于@method标记来获得devtools::document()之后所需的名称空间。

相关内容

  • 没有找到相关文章

最新更新