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:
字段。
我在使用 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:
字段。