从Matrix包导入S4功能

时间:2014-11-06 15:56:45

标签: r package sparse-matrix s4 roxygen2

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是稀疏矩阵,我想确保此函数使用Matrix包中的稀疏矩阵乘法方法。但是当我运行devtools::document()时,我收到以下错误:

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

1 个答案:

答案 0 :(得分:9)

您应该使用@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)
}