R找不到Rcpp函数

dan*_*dan 3 r devtools package rcpp rstudio

我在遵循Hadley的手册中构建了一个R package(被叫myUtils),它使用了一个cpp文件.我的文件驻留在运行:之后创建的目录中,并且在我的目录下我有一个名为的文件,其中包含以下行:RStudiocppsrcdevtools::use_rcpp()RmyUtils.R

#' myUtils: A package with various functions for my analyses
#'
#'
#' @docType package
#' @name myUtils
#' @useDynLib myUtils
#' @importFrom Rcpp sourceCpp
NULL
Run Code Online (Sandbox Code Playgroud)

这是我的cpp档案:

// [[Rcpp::depends(RcppArmadillo, RcppEigen)]]

#include <RcppArmadillo.h>
#include <RcppEigen.h>

using namespace Rcpp;

// [[Rcpp::export]]
SEXP armaMatMult(arma::mat A, arma::mat B){
  arma::mat C = A * B;

  return Rcpp::wrap(C);
}

// [[Rcpp::export]]
SEXP eigenMatMult(Eigen::MatrixXd A, Eigen::MatrixXd B){
  Eigen::MatrixXd C = A * B;

  return Rcpp::wrap(C);
}
Run Code Online (Sandbox Code Playgroud)

我然后运行devtools::document()添加useDynLib(myUtils)NAMESPACE文件中.我然后运行Build & Reload,成功完成,并RccpExports.RR目录中创建了文件,其中包含cpp函数,例如:

eigenMatMult <- function(A, B) {
    .Call('_myUtils_eigenMatMult', PACKAGE = 'myUtils', A, B)
}
Run Code Online (Sandbox Code Playgroud)

然后我试着测试,eigenMatMult但它不被识别:

set.seed(1)
A <- matrix(rnorm(100), 10, 10)
> eigenMatMult(A=A,B=A)
Error: could not find function "eigenMatMult"
Run Code Online (Sandbox Code Playgroud)

并且在之前都没有出现 myUtils::

看起来我错过了什么,但我无法弄清楚它是什么.

帮助将不胜感激.

Dir*_*tel 6

Rcpp Attributes机制本身不会将函数添加到NAMESPACE文件中的export指令.我们的示例使用通配符导出所有内容.

因此,如果您的功能不可见,请执行其中一项或两项

  • 通过:::ie 打电话myUtils:::eigenMatMult(A, A)
  • eigenMatMult通过手动或通过roxygen标签添加到出口