Roxygen2 在构建和检查期间无法找到 class 定义

Roxygen2 unable to find class definition during build & check

我在使用 devtool 的 build() 和 check() 函数构建 R 包时遇到了很多问题。最严重的是这些函数在 R 目录的 .R 文件中找不到 class 使用 setClass 创建的定义。

例如,以下代码包含在 R\rnet.input.R 中,并定义了一个对象,其中包含从它继承的更复杂的 class 的各种插槽。

#' rnet.input - An S4 class for accepting input data common for generating all rnet objects. These objects are used to handle rnet objects and need not be called by the user.
#' 
#' The superclass for holding input for rnet functions.
#' 
#' @slot RawData A dataframe containing the original dataset.
#' @slot cor_method The type of correlation matrix to use. Must be a partial match to one of the following strings: 'pearson', 'spearman', 'kendall'.
#' @slot cor_pairing Method for handling how missing data is handled in pairs. See 'pair' argument in function 'cor' for more information.
#' @slot n_threshold The minimum number of valid pair-wise observations that must exist for an edge to be estimated. Vertex pairs with fewer valid pair-wise observations are assumed to be conditiontally independent.
#' @slot L1_orig The declared L1 penalty to be used when estimating rnet topology
#' @slot v_set_orig The declared set of k variables to be included in the rnet as vertices
#' @slot Forced_zeros A matrix with 2 columns containing pairs of vertices to force to be conditionally independent in the rnet
#' @slot Layout_master A k x 2 matrix x & y coordinates of each vertex in the graph.

rnet.input <- setClass(Class = "rnet.input",
                   slots = list(
                     RawData = 'data.frame',
                     cor_method = 'character',
                     cor_pairing = 'character',
                     n_threshold = 'numeric',
                     L1_orig = 'numeric',
                     V_set_orig = 'character',
                     Forced_zeros = 'matrix',
                     Layout_master = 'ANY'
                   )
)

但是,在 build() 和 check() 期间,由于以下错误,该过程失败:

Error in reconcilePropertiesAndPrototype(name, slots, prototype, superClasses,  :no definition was found for superclass “rnet.input” in the specification of class “rnet.basic”

我尝试将 .R 文件放置在这些 classes 在多个位置定义的位置。唯一的变化是当我在一个文件中包含所有 5 个定义时,此时检查将 运行 但仍然声称它们在某些点未定义并且存在 'sodoc' 冲突。我也试过添加 name、rdname、export 和 exportClass 标签,但这并没有解决任何问题。

其他问题包括 check() 声称具有文档的数据集未记录,并且其他数据集在多个位置创建,即使对这些对象的代码引用仅在单个文件中出现一次。

感谢任何帮助。

好的,这很简单。

你需要添加#' @include Rnet_classes.R,例如在setGeneric('Assign_Emetadata'的文档中,这样roxygen2就知道它应该在渲染之前。

这将在您的 DESCRIPTION 文件中添加一个 Collate: 字段。