RCPP犰狳:在函数中打印整数值
CPP和RCPP的新功能 我正在与RCPP一起制作一个R包 以下是我的步骤:RCPP犰狳:在函数中打印整数值,r,rcpp,rcpparmadillo,R,Rcpp,Rcpparmadillo,CPP和RCPP的新功能 我正在与RCPP一起制作一个R包 以下是我的步骤: 使用包传输到目录 运行compileAttributes(pkgdir=“.”,verbose=TRUE) 然后从devtools运行build和install 我希望我的一个CPP函数在调用消息时打印消息。 所以我补充说: Rcpp::Rcout << "Hello World!" << std::endl; Rcpp::Rcout在我的系统(Ubuntu 20.04,R
Rcpp::Rcout << "Hello World!" << std::endl;
Rcpp::Rcout在我的系统(Ubuntu 20.04,R4.0.0)上,这就像预期的那样工作(在添加/[[Rcpp::export]]
属性以确保该函数可以从R调用后):
sillyme(诊断(2))
#你好,世界!
# 2
# [,1] [,2]
# [1,] 1 0
# [2,] 0 1
在我的系统(Ubuntu20.04,R4.0.0)上,这就像预期的那样工作(在添加/[[Rcpp::export]]
属性以确保该函数可以从R调用后):
sillyme(诊断(2))
#你好,世界!
# 2
# [,1] [,2]
# [1,] 1 0
# [2,] 0 1
帮助我们帮助您:提供帮助。我将从一个独立的C++文件导出函数,使用<代码> /[[RCPP::Ext] ] /Cuth>属性,并以这种方式再现不想要的行为,然后您有一个简单的可重复的代码进入您的问题,让我们能够看到问题所在。我不想发布完整的项目框架等。也许你应该,或者至少你应该更仔细地看看框架生成了什么:在一个包中,你不需要Rcpp::depends()
或Rcpp::plugins()
,因为这是在描述文件级别处理的(可能是src/Makevars
,但现在C++11已经是默认版本了)。所有这些都是无害的,但细节很重要。这里有一个示例,但不可复制;我在“答案”中演示当你在自己的机器上尝试这个精确的代码时,这个代码是否工作了?它是否编译得很好?如果是这样的话,当你从R?好点调用它的时候,它是如何表现的?让我尝试一下我的情况。帮助我们帮助你:提供一个。我将从一个独立的C++文件导出带有“COD”的函数。e> //[[Rcpp::导出]]
属性并以这种方式复制不需要的行为,那么您就有了一个简单的最小可复制代码,我们可以看到问题所在。同意,请参阅更新。我不想发布完整的项目框架等。也许您应该,或者至少您应该更仔细地查看骨架生成的内容:In一个不需要Rcpp::depends()
或Rcpp::plugins()
的包,因为这是在描述
文件级别处理的(可能是src/Makevars
,但现在C++11已经是默认的了).所有这些都是无害的,但细节很重要。这里有一个例子,但不可复制;我在“答案”中演示这段代码按照您所描述的方式工作。您在自己的机器上尝试过这段代码吗?它编译得好吗?如果是的话,当您从R调用它时,它到底表现得如何?很好,让我尝试提取我的情况。是的,[[Rcpp::export]]
在一个包中很重要!如果它丢失了,你会得到警告,如果你忽略了这些…那么你可能会得到令人失望的结果。是的,[[Rcpp::export]]]
在一个包中很重要!如果它丢失了,你会得到警告,如果你忽略了这些…那么你可能会得到令人失望的结果。
Rcpp::Rcout << i << std::endl;
# include <RcppArmadillo.h>
// [[Rcpp::depends(RcppArmadillo)]]
// [[Rcpp::plugins(cpp11)]]
using namespace Rcpp ;
arma::mat sillyme (arma::mat FE) {
arma::mat FEE = FE ;
Rcpp::Rcout << "Hello World!" << std::endl;
Rcpp::Rcout << FE.n_rows << std::endl;
return(FEE) ;
}