从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作为兼容性的弃用函数保留.)
这个问题可能过多,但我找不到.基本上我使用RStudio和键盘快捷键cmd+ shift+ c来插入注释.还有其他组合直接插入roxygen标签#'吗?还是一种修改RStudio的方法告诉它添加'我按cmd+ shift+的时候c?
我正在使用devtools构建R包,并且有些功能并非设计为最终用户可见.但是,由于这些函数涉及调用C代码.Call,因此我必须@useDynLib在函数上面编写自动生成.Rd文件.这样,当我构建软件包时,即使我没有包含@export那些函数,它们仍会出现在帮助文档中......有没有办法抑制这些函数,即使它们已被记录?谢谢!
我正在开发一个具有该功能的包forecast.myclass.我希望该功能与forecast包很好地协同工作.即,当forecast加载包时,代码forecast(object)应该forecast.myclass从我的包调用.
由于我只需forecast要从包中通用定义forecast,并且我不使用包中的任何其他功能,forecast我不愿意将其包含在Depends中.所以我通过以下方式在我的包中定义泛型:
##'
##' @export
forecast <- function(object,...) UseMethod("forecast")
##' @rdname forecast.midas_r
##' @method forecast midas_r
##' @export
forecast.midas_r <- function(object,newdata=NULL,method=c("static","dynamic"),insample=get_estimation_sample(object),...) {
Run Code Online (Sandbox Code Playgroud)
现在,当forecast未加载包时,一切都按预期工作.但是,当我打开包forecast,然后forecast.midas_r不叫,做的时候forecast(object),其中object的类midas_r.我该如何解决这个问题?
我正在写一个R包,我正在用roxygen2记录我的所有函数.但是,我不希望所有功能都出现在软件包的手册中.如何指定应在包装手册中显示哪些功能,或哪些不应该?
我知道用一个前导点命名一个函数,例如,.f <- function()而不是f <- function()一个解决方案.还有其他解决方案吗?
在roxygen2中,可以使用标记@inheritParams继承另一个函数的完整参数集.但它是否也可以只继承它们的某个子集?(不包括继承的情况...,由...充分处理@inheritDotParams.)
我正在通过roxygen2包转换我的包以使用roxygen文档.现在我的包没有加载,我认为这是因为缺少来自NAMESPACE文件的useDynLib(mypackage)调用.我该如何生成这个?
我正在使用Rstudio简化Sweave和R的数据分析,我将与其他分析师分享.为了使变量的编码变得清晰,如果需要的话,可以使用帮助文件这样的东西来调用?myData并获取有用的文件.我喜欢Rd降价并认为它实际上具有记录分析数据集的巨大潜力,包括总体摘要,通过变量分解的变量,以及如何运行一些探索性分析的示例.
如果你专门创建一个包,这很容易做到这一点,但我认为它很混乱,因为包最终是一个函数集合,它们不集成Rnw文件.
我可以使用Roxygen2为不属于任何包的数据集创建帮助文件吗?
我正在开发一个包roxygen2,其中包括许多lattice基于可视化的包.这些都不错,但没有必要使用该程序包,因此lattice在上市Suggests:的第DESCRIPTION文件,而不是Depends:部分.
但是,我还没有想出如何加载lattice接获要求用户在两者传递的方式roxygenize()和R CMD check.以下两种方式都使得lattice看起来像未声明的依赖关系,并将返回以下错误.
##' @import lattice
{}
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
xyplot(y ~ x)
}
Run Code Online (Sandbox Code Playgroud)
和
##' Visualization
##'
##' @param x Data.
##' @param y More data.
##' @export
vizz <- function(x, y){
library(lattice)
xyplot(y ~ x)
}
Run Code Online (Sandbox Code Playgroud)
两者都给出了同样的错误
$ R CMD check dummy.roxygen …Run Code Online (Sandbox Code Playgroud) 我希望记录一个R函数,并在多个参数名称匹配时从其他函数继承单个参数文档.例如,假设我有以下2个功能.
#' Function 1.
#'
#' Description of function 1.
#'
#' @param x XYZ
#' @param y ZYX
#' @return Numeric
fun1 <- function(x, y) {value <- 1}
#' Function 2.
#'
#' Description of function 2.
#'
#' @param x ABC
#' @param y CBA
#' @return Numeric
fun2 <- function(x, y) {value <- 2}
Run Code Online (Sandbox Code Playgroud)
我现在想要创建第三个函数,它继承fun1的参数x和fun2的参数y.以下不起作用:
#' Function 3.
#'
#' Description of function 3.
#'
#' @inherit fun1 params x
#' @inherit fun2 params y
fun3 <- …Run Code Online (Sandbox Code Playgroud)