gpt4 book ai didi

roxygen2:导出打印方法的问题

转载 作者:行者123 更新时间:2023-12-04 10:13:52 25 4
gpt4 key购买 nike

我已更新到 roxygen2 v4.0.0,现在正在尝试按照指示将 @S3method 和 @method 命令转换为 @export 命令 here .除了与打印相关的方法外,这似乎对我的所有方法都有效。

这是一个说明我的问题的玩具示例(我理解示例的愚蠢)。这是.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 文件中的其他几种方法。我的问题似乎只出现在打印方法上。

有人可以指出我哪里出错了吗?预先感谢您对此问题的任何帮助。

就其值(value)而言,我使用的是 R 3.1.0、RStudio 0.98.501 和 roxygen2 4.0.0。

更新 1:命名空间中有一个 export(print.zzzTemp) 但没有 S3method(print,zzzTemp) ......即与 ZNK 相同的问题(在评论中)。

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

最佳答案

我已经找到了解决我的问题的方法(在上面的评论中),它可能对你有用。在 The NEWS.md file for v3.0.0 ,提到@method不需要标签,因为 roxygen2 会解决这个问题,但在 roxygen2 不能这样做的极少数情况下,它仍然可用。我的解决方案:

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

这给了我 S3method(print, myClass)在我的 NAMESPACE 文件中。

关于roxygen2:导出打印方法的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23724815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com