相关疑难解决方法(0)

使用Roxygen构建R包时的S3方法一致性警告

我为一个使用S3类的函数创建了一个roxygen文件.我roxygenize然后建立并检查并得到一个警告:

* checking S3 generic/method consistency ... WARNING
common:
  function(word.list, ...)
common.list:
  function(word.list, overlap, equal.or)

See section 'Generic functions and methods' of the 'Writing R
Extensions' manual.
Run Code Online (Sandbox Code Playgroud)

所以我花时间学习:

http://cran.r-project.org/doc/manuals/R-exts.html#Generic-functions-and-methods & https://github.com/hadley/devtools/wiki/S3

但我无法弄清楚我在下面的文件中做错了什么.该功能按预期工作.
1)为什么会发出警告?2)我怎么能让它消失?

#' Find Common Words Between Groups
#' 
#' Find common words between grouping variables (e.g. people).
#' 
#' @param word.list A list of names chacter vectors.
#' @param overlap Minimum/exact amount of overlap.
#' @param equal.or A character vector of c(\code{"equal"}, \code{"greater"}, 
#' \code{"more"}, \code{"less"}).
#' @param …
Run Code Online (Sandbox Code Playgroud)

r r-s3

31
推荐指数
1
解决办法
3001
查看次数

使用roxygen2 v4导出名称中带点的非S3方法

roxygen2版本开始4.0.0,@S3method标签已被弃用,有利于使用@export.

程序包现在尝试检测函数是否为S3方法,如果认为它是一个,则自动将该行添加S3method(function,class)NAMESPACE文件中.

问题是,如果一个函数不是一个S3方法,但它的名字包含一个.然后roxygen有时会出错,并在不应该的时候添加该行.

有没有办法告诉roxygen函数不是S3方法?


根据要求,这是一个可重复的例子.

我有一个导入的包R.oo,其中包含一个名为的函数check.arg.

library(roxygen2)
package.skeleton("test")
cat("Imports: R.oo\n", file = "test/DESCRIPTION", append = TRUE)
writeLines(
  "#' Check an argument 
#' 
#' Checks an argument.
#' @param ... Some arguments.
#' @return A value.
#' @export
check.arg <- function(...) 0",
  "test/R/check.arg.R"
)
roxygenise("test")
Run Code Online (Sandbox Code Playgroud)

现在命名空间包含该行S3method(check,arg).

check是一个S3泛型R.oo,所以roxygen试图聪明,并猜测我想check.arg成为一个S3方法.不幸的是,这些功能是无关的,所以我没有.

(为了抢占我刚刚重命名的建议check.arg:这是其他人编写的遗留代码,我已经创建了一个checkArg替代品,但我需要将其check.arg作为兼容性的弃用函数保留.)

r roxygen2

18
推荐指数
1
解决办法
1028
查看次数

标签 统计

r ×2

r-s3 ×1

roxygen2 ×1