从Matrix包导入S4功能

Zac*_*ach 13 r package sparse-matrix s4 roxygen2

矩阵包定义用于相乘的矩阵,即由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)
}
Run Code Online (Sandbox Code Playgroud)

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

Updating mypackage documentation
Loading mypackage
Error: object ‘%*%’ is not exported by 'namespace:Matrix'
Run Code Online (Sandbox Code Playgroud)

cde*_*man 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)
}
Run Code Online (Sandbox Code Playgroud)