мой пакет R использует Rcpp и RcppArmadillo.Я построил это в Rstudio.Я следую руководству H.Wickhams (R-пакеты).Пакет собирается (с одним предупреждением, см. Ниже), устанавливается и работает нормально.
Сценарии cpp были задокументированы с использованием // 'headers
У меня есть несколько вопросов, которые, я думаю, все связаны:
Если я добавлю //'@export
в файл cpp, то в NAMESPACE
будет добавлена запись export()
.Разве это не должен быть экспорт (имя файла)?
Файл RcppExports.R
содержит значение NULL, и во время сборки я получаю предупреждение "Предупреждение: RcppExports.R:18
: отсутствует имя«.Почему это?Как мне исправить это?
Как мне прочитать файл справки для скрипта cpp.? Кажется, что имя файла работает не так, как для файлов R в пакете?
РЕДАКТИРОВАТЬ: фрагмент кода из .cpp
//' @export
#include <RcppArmadillo.h>
// [[Rcpp::export]]
arma::mat myfunc(int nSize, ... ,arma::cube suitability) {
do some stuff
}
Код из RcppExports.R (Это NULL - предупреждение, упомянутое выше)
#' @export
NULL
myfunc <- function(nSize, ..., suitability) {
.Call('_myfunc', PACKAGE = 'mypackage', nSize, ... , suitability)
}
и код из RccpExports.cpp
// Generated by using Rcpp::compileAttributes() -> do not edit by hand
// Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393
#include <RcppArmadillo.h>
#include <Rcpp.h>
using namespace Rcpp;
// myfunc
arma::mat myfunc(int nSize, ..., arma::cube suitability);
RcppExport SEXP _myfunc(SEXP nSizeSEXP, SEXP suitabilitySEXP) {
BEGIN_RCPP
Rcpp::RObject rcpp_result_gen;
Rcpp::RNGScope rcpp_rngScope_gen;
Rcpp::traits::input_parameter< int >::type nSize(nSizeSEXP);
Rcpp::traits::input_parameter< arma::cube >::type suitability(suitabilitySEXP);
rcpp_result_gen = Rcpp::wrap(myfunc(nSize, ..., suitability));
return rcpp_result_gen;
END_RCPP
}
static const R_CallMethodDef CallEntries[] = {
{"_myfunc", (DL_FUNC) &_myfunc, 9},
{NULL, NULL, 0}
};
RcppExport void R_init_mypackage(DllInfo *dll) {
R_registerRoutines(dll, NULL, CallEntries, NULL, NULL);
R_useDynamicSymbols(dll, FALSE);
}
РЕШЕНИЕ : Спасибо Андерсу и Ральфу
#include <RcppArmadillo.h>
//' calculates stuff
//'
//' Calculates the stuff
//'
//'@param nSize number of some stuff
//'@param p2
//'@param p3
//'@param p4
//'@param p5
//'@param p6
//'@param p7
//'@param p8
//'@param suitability 3D array
//' @export
// [[Rcpp::export]]
arma::mat myfunc(int nSize, ... ,arma::cube suitability) {
do some stuff
}