相关疑难解决方法(0)

如何使用Roxygen从不同的包中正确记录泛型的S3方法?

我正在编写一个包,它定义了一个新类,测量器和一个print方法,即print.surveyor.我的代码工作正常,我使用roxygen进行内联文档.但R CMD check发出警告:

在文档对象'print.surveyor'中使用但不在代码中使用的函数/方法:print

我使用了Hadley编写的以下两页作为灵感: 命名空间文档功能,两者都说正确的语法是@method function-name class

所以我的问题是:print使用Roxygen 记录我的新类的方法的正确方法是什么?更具体地说,我如何摆脱警告?


这是我的代码:(评论的文档表明试图解决这个问题,但没有一个工作.)

#' Prints surveyor object.
#' 
#' Prints surveyor object
#' 
## #' @usage print(x, ...)
## #' @aliases print print.surveyor
#' @param x surveyor object
#' @param ... ignored
#' @S3method print surveyor
print.surveyor <- function(x, ...){
    cat("Surveyor\n\n")
    print.listof(x)
}
Run Code Online (Sandbox Code Playgroud)

和氧化输出,即print.surveyor.Rd:

\name{print.surveyor}
\title{Prints surveyor object.}
\usage{print(x, ...)
#'}
\description{Prints surveyor object.}
\details{Prints surveyor object

#'} …
Run Code Online (Sandbox Code Playgroud)

r roxygen

45
推荐指数
2
解决办法
6565
查看次数

创建 RPackage - UseMethod 找不到函数

我正在尝试创建 R 包的第一次尝试。我有下面的一些功能。

#' @export
overview  <- function(x, ...) {
  UseMethod("overview")
} 

overview.query <- function(return.query, ...) {
Run Code Online (Sandbox Code Playgroud)

现在,当我使用devtools::load_all()(加载所有函数)时,一切正常,并overview.query在我传递class query.

但是重建,并且UseMethod无法再找到该overview.query功能(因此未加载所有功能),我做错了什么?

错误消息:没有适用于 'overview' 的方法应用于类“c('query', 'data.frame')”的对象

我认为只有向用户公开的@export函数才会被'ed,所有其他函数仍然对其他包函数在内部可见。

r

6
推荐指数
1
解决办法
993
查看次数

情节的新方法 - 如何出口?

我正在制作一个包,我想为剧情定义一种新方法.我正在使用roxygen源代码文档.这个问题看起来非常类似于: 如何使用Roxygen从不同的包中正确记录泛型的S3方法?Roxygen2 - 如何正确记录S3方法, 但我仍然无法让它工作.

导致我麻烦的相关部分是:

#' Generic plot method
#'
#' @param x \dots
#' @param ... \dots
#' @export
plot <- function(x, ...) UseMethod("plot")

#' Default plot method
#'
#' @param x \dots
#' @param ... \dots
#' @importFrom graphics plot
#' @method plot default
#' @S3method plot default
plot.default <- function(x, ...) graphics::plot(x, ...)

#' Plotting function for ABI object
#'
#' Description.
#' 
#' @param x ABI object as generated by newABI.
#' @param …
Run Code Online (Sandbox Code Playgroud)

generics r package roxygen

5
推荐指数
2
解决办法
2121
查看次数

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 <- …
Run Code Online (Sandbox Code Playgroud)

r roxygen2

5
推荐指数
1
解决办法
800
查看次数

在 NAMESPACE 中使用 Roxygen 制作 S3method

我想使用 roxygen2 导出一个名为 [.myclass 的 S3method,但我看不到一种干净的方法来做到这一点。

我需要 NAMESPACE

S3method("[",myclass)
Run Code Online (Sandbox Code Playgroud)

在其中或在我需要该包后无法使用该方法,但 roxygen2 似乎不想帮助我解决这个问题。

我可以强迫它

#' @S3method [ myclass
setMethodS3("[",
        c(x="myclass"),
        function(x,i) {
blah blah balh
})
Run Code Online (Sandbox Code Playgroud)

但是 roxygen 然后说 s3method 已弃用,我应该改用 @export,但是

#' @export
setMethodS3("[",
          c(x="myclass"),
          function(x,i) {
  blah blah balh
 })
Run Code Online (Sandbox Code Playgroud)

只是不这样做。(在 NAMESPACE 中放置一个空的导出)。

我问了包的作者,他建议我使用@method 和@export,但这也不起作用

#' @method [ myclass
#' @export
setMethodS3("[",
          c(x="myclass"),
          function(x,i) {
  blah blah balh
 })
Run Code Online (Sandbox Code Playgroud)

在 NAMESPACE 中也以“export()”结尾

我错过了什么?

r roxygen2

5
推荐指数
1
解决办法
718
查看次数

检查 S3 通用/方法一致性......警告

我已经阅读了以下两个讨论:
Roxygen2 - 如何在
使用 Roxygen 构建 R 包时正确记录 S3 方法S3 方法一致性警告
以及以下两个教程:
http : //cran.r-project.org/doc/manuals/R-exts .html#Generic-functions-and-methods
http://adv-r.had.co.nz/S3.html
但我的问题仍然没有解决。以下是详细信息:
我想在一个包中定义一个 S3 的 plot() 泛型方法,我的代码是:

#' description
#'
#' more details
#'
#' @param x "test" object
#' @param label parameter one
#' @param log parameter two
#' @param ... graphical parameters to plot
#'
#' @examples
#' plot(a)
#'
#' @export
plot <- function(x, label=TRUE, log=TRUE,  ...){
  UseMethod("plot")
}

#' @export
plot.test <- function(x, label=TRUE, log=TRUE, ...){ …
Run Code Online (Sandbox Code Playgroud)

r object r-s3 roxygen2

5
推荐指数
1
解决办法
1095
查看次数

制作R-Package:NAMESPACE

我正在创建一个R-package,我正处于我BUILD的包装步骤.

我已经阅读了关于NAMESPACE 的 Writing R Extensions文档(更具体地说,有关导入,导出和注册S3method的1.5.1和1.5.2节).

我担心这一步,因为当CHECK我收到我的包裹时,我收到了这个警告:

发现以下明显的S3方法已导出但未注册:print.myClass print.myOtherClass summary.myClass summary.myOtherClass请参阅"编写R扩展"手册中的"注册S3方法"部分.

任何有助于破译未注册S3方法和NAMESPACE文件的后果的任何帮助都将成为我的一天.

谢谢你的帮助.

r package

2
推荐指数
1
解决办法
827
查看次数

标签 统计

r ×7

roxygen2 ×3

package ×2

roxygen ×2

generics ×1

object ×1

r-s3 ×1