【问题标题】:Generic print function roxygen2通用打印函数 roxygen2
【发布时间】:2012-12-04 02:15:16
【问题描述】:

我有一个通用打印函数,我认为我已经根据通用函数(LINK,诚然我有点难以掌握)和这个问题(LINK)正确设置了它。但是,它仍然会在检查中引发警告。下面是一个模拟函数、打印方法、roxygen 文档和检查中的错误。有关打印功能正在做什么的背景;基本上我希望输出看起来不像是类,但它仍然带有一个用于由后续函数处理该对象的类。如何使警告消失(并保留打印功能)?

FUN <- function(x) {
    class(x) <- "full_matrix"
    x
}

#' Prints a fuul_matrix object
#' 
#' prints a test object
#' 
#' @param full_matrix The full_matrix object
#' @method print full_matrix
#' @S3method print full_matrix
print.full_matrix <- function(full_matrix) {
    x <- full_matrix
    class(x) <- NULL
    print(x)
}

x <- FUN(mtcars)
x
class(x)

警告:

* checking S3 generic/method consistency ... WARNING
print:
  function(x, ...)
print.full_matrix:
  function(full_matrix)

print:
  function(x, ...)
print.incomplete_matrix:
  function(incomplete_matrix)

See section 'Generic functions and methods' of the 'Writing R
Extensions' manual.

【问题讨论】:

    标签: r roxygen2


    【解决方案1】:

    来自Writing R Extensions

    一个方法必须有泛型的所有参数,包括...如果泛型有。

    你的方法既没有x也没有...

    【讨论】:

    • 我不明白。现在我愿意。不能声称了解所有内容,但我认为 print 方法必须将类名作为参数。函数名告诉 print 方法它在做什么。
    • 我不知道你想写print.full_matrix &lt;- function(x, ...) print(unclass(x), ...)
    • 你不需要#' @param
    • 您在print(unclass(x), ...) 上是正确的,但删除#' @param 会发出警告
    • 哦,对了,你需要@param...除非你改用#' @ keywords internal。同样来自编写 R 扩展:“特殊关键字'internal' 标记了不属于包 API 的内部对象的页面。如果对象 foo 的帮助页面具有关键字'internal',则 help(foo) 提供此帮助页面, 但 foo 被排除在几个对象索引之外,包括 HTML 帮助系统中按字母顺序排列的对象列表。”
    猜你喜欢
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多