You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R包roxygen文档未生成\method{}{}调用致R CMD check警告

解决R包roxygen文档生成S3方法usage缺失的问题

问题背景

将R包从.Rd格式转换为roxygen文档后,执行R CMD check时出现警告:定义的ridge类S3方法未在生成的ridge.Rd的\usage{}块中以\method{ridge}{xxx}(...)形式呈现,导致提示X、formula等多个文档参数未在usage中声明。

原代码问题

原ridge.R中的roxygen注释仅为泛型函数ridge添加了@name和@aliases标签,但未明确指定将两个S3方法的usage整合到主文档中,导致devtools::document()生成的ridge.Rd仅包含泛型函数的usage:

#' @name ridge
#' @aliases ridge ridge.default ridge.formula
#' @export
ridge <- function(y, ...) {UseMethod("ridge")}
#' @export 
ridge.formula <- function(formula, data, lambda=0, df, svd=TRUE, ...){...}
#' @export 
ridge.default <- function(y, X, lambda=0, df, svd=TRUE, ...){...}

生成的ridge.Rd的\usage{}部分:

\usage{
ridge(y, ...)
}

修复方案

为每个S3方法添加@describeIn ridge标签,指定将方法的文档(包括参数和usage)整合到主ridge文档中。同时补充每个方法的参数注释,确保文档完整性:

#' 岭回归泛型函数
#' @name ridge
#' @aliases ridge ridge.default ridge.formula
#' @export
ridge <- function(y, ...) {UseMethod("ridge")}

#' @describeIn ridge 基于公式接口的岭回归实现
#' @param formula 模型公式
#' @param data 用于拟合模型的数据集
#' @param lambda 正则化惩罚参数,默认值为0
#' @param df 可选参数,指定模型自由度
#' @param svd 是否使用SVD分解计算岭回归,默认值为TRUE
#' @param ... 传递给其他方法的额外参数
#' @export 
ridge.formula <- function(formula, data, lambda=0, df, svd=TRUE, ...){...}

#' @describeIn ridge 基于矩阵接口的岭回归实现
#' @param y 响应变量向量
#' @param X 预测变量矩阵
#' @param lambda 正则化惩罚参数,默认值为0
#' @param df 可选参数,指定模型自由度
#' @param svd 是否使用SVD分解计算岭回归,默认值为TRUE
#' @param ... 传递给其他方法的额外参数
#' @export 
ridge.default <- function(y, X, lambda=0, df, svd=TRUE, ...){...}

验证结果

执行devtools::document()后,生成的ridge.Rd的\usage{}部分会自动包含两个S3方法的\method声明,与期望格式一致:

\usage{
ridge(y, ...)
\method{ridge}{default}(y, X, lambda=0, df, svd=TRUE, ...)
\method{ridge}{formula}(formula, data, lambda=0, df, svd=TRUE, ...)
}

再次运行R CMD check,参数未在usage中声明的警告将消失。

内容的提问来源于stack exchange,提问作者user101089

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 02:00:30