#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector condSumRcpp(NumericVector x, NumericVector y, LogicalVector z) {
int n = x.length();
int sumLength = sum(z);
NumericVector res(sumLength);
int j=0;
for(int i = 0; i < n; i++) {
if (!z[i]) continue;
res[j] = x[i] + y[i];
j+=1;
}
return wrap(res);
}
当我使用sourceCpp时,这工作正常。但是当我使用
时Rcpp.package.skeleton("testRcpp",
example_code = FALSE,
cpp_files="utils.cpp",
module=FALSE
)
并使用R CMD INSTALL --build testRcpp
构建包
Error in .Call("testRcpp_condSumRcpp", PACKAGE = "testRcpp", x, y, z) :
"testRcpp_condSumRcpp" not available for .Call() for package "testRcpp"
如果我使用
执行相同的过程// [[Rcpp::export]]
NumericVector colMaxRcpp(NumericMatrix X) {
int ncol = X.ncol();
NumericVector res(ncol);
for (int col = 0; col < ncol; col++){
res[col]=Rcpp::max(X(_, col));
}
return wrap(res);
}
然后它有效!
答案 0 :(得分:0)
您不能随意混合属性和Rcpp.package.skeleton()
。
我通常首先创建一个空包(通过Rcpp.package.skeleton()
或RStudio中的相应功能),然后添加我的功能。致电compileAttributes()
,您应该做得很好。