我正在尝试创建一个R包,该包使用来自.cpp脚本中截断法线的随机绘制。我正在使用pckage RcppTN中的rtn1函数。如果我获取代码,则该功能可以正常工作。构建软件包后,我会收到错误消息:
A
简化的.cpp代码在这里
> library(testtruncnorm)
> testtruncnorm()
Error in testtruncnorm::testtruncnorm() :
function 'RcppTN_rtn1' not provided by package 'RcppTN'
我的NAMESPACE文件是
#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;
}
我的DESCRIPTION文件是
useDynLib(testtruncnorm, .registration=TRUE)
importFrom(Rcpp, evalCpp)
exportPattern("^[[:alpha:]]+")
我正在使用RStudio创建“带有RcppArmadillo的R包”以开始使用。 RStudio版本1.1.456。 R版本3.5.1。 Windows 10。
答案 0 :(得分:2)
您必须确保附加char day[9], month[12];
//sscanf(date, "%s, %s, %d", day, month, &year);
int count = sscanf(date, "%8s , %11s , %d", day, month, &year);
if (count != 3) {
Handle_unexpected_input_somehow();
}
。您可以使用
RcppTN
在importFrom(RcppTN, rtn)
中。在NAMESPACE
的文档中说应该添加
RcppTN
应该具有相同的效果。