r-从Matrix包导入S4函数



Matrix包定义了一整组S4矩阵乘法方法,这些方法由S4通用函数%*%crossprodtcrossprod调度。

如何导入"%*%"方法,以便在自己的包中使用?当我运行devtools::document():时,这段代码失败了

#' @title my function
#'
#' @description Does magic Matrix stuff
#' @import methods
#' @importFrom Matrix "%*%" Diagonal
myfun <- function(x, y){
  x %*% Diagonal(x=y)
}

如果x是稀疏矩阵,我想确保这个函数使用矩阵包中的稀疏矩阵乘法方法。但当我运行devtools::document()时,我会得到以下错误:

Updating mypackage documentation
Loading mypackage
Error: object ‘%*%’ is not exported by 'namespace:Matrix'

您应该使用@importMethodsFrom并删除运算符周围的引号。您可能还想使用@export导出函数(您可能已经知道这一点,但它使答案更加完整)。以下内容对我来说毫无错误。

#' @title my function
#'
#' @description Does magic Matrix stuff
#' @import methods
#' @importFrom Matrix Diagonal
#' @importMethodsFrom Matrix %*%
#' @export
myfun <- function(x, y){
    x %*% Diagonal(x=y)
}

最新更新