Скрипт RcppTN .cpp работает, когда он получен, но не при компиляции в библиотеке. - PullRequest
0 голосов
/ 23 октября 2018

Я пытаюсь создать пакет R, который использует случайные отрисовки из усеченной нормали в сценарии .cpp.Я использую функцию rtn1 из пакета RcppTN.Если я исходный код, функция работает нормально.После сборки пакета я получаю сообщение об ошибке:

> library(testtruncnorm)
> testtruncnorm()
Error in testtruncnorm::testtruncnorm() :
  function 'RcppTN_rtn1' not provided by package 'RcppTN'

Упрощенный код .cpp находится здесь

#include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
#include <RcppTN.h>
// [[Rcpp::depends(RcppTN)]]
#include<armadillo>
using namespace Rcpp;

//' draw truncated normal
//'
//' testtruncnorm() 
//' @return returns 2 draws from a truncated normal
// [[Rcpp::export]]
arma::vec testtruncnorm()
{
  arma::vec result = arma::ones(2);
  result[1] = RcppTN::rtn1(1, 1, 0,HUGE_VAL);
  result[2] = RcppTN::rtn1(1, 1, 0,HUGE_VAL);

  return result; 
 }

Мой файл NAMESPACE

useDynLib(testtruncnorm, .registration=TRUE)
importFrom(Rcpp, evalCpp)
exportPattern("^[[:alpha:]]+")

Мой файл ОПИСАНИЕis

Package: testtruncnorm
Type: Package
Title: What the Package Does Using Title Case
Version: 1.0
Date: 2018-10-23
Author: Your Name
Maintainer: Your Name <your@email.com>
Description: More details about what the package does. See
     <http://cran.r-project.org/doc/manuals/r-release/R-exts.html#The- 
DESCRIPTION-file>
     for details on how to write this part.
License: GPL (>= 2)
Imports: Rcpp (>= 0.12.19), RcppTN
LinkingTo: Rcpp, RcppArmadillo, RcppTN

Я использую RStudio создать "R Package with RcppArmadillo", чтобы начать.RStudio версия 1.1.456.Версия R 3.5.1.Windows 10.

1 Ответ

0 голосов
/ 23 октября 2018

Вы должны убедиться, что RcppTN присоединяется.Вы можете сделать это, используя

importFrom(RcppTN, rtn)

в NAMESPACE.В документации к RcppTN говорится, что нужно добавить

Depends: RcppTN

, что должно иметь тот же эффект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...