为Rcpp函数中的参数设置“NULL”默认值
我想在为Rcpp函数中的参数设置“NULL”默认值,rcpp,Rcpp,我想在Rcpp函数中将参数的默认值设置为NULL,如果参数不是NULL,则根据参数进行一些计算。这种代码的一个例子是 #include <Rcpp.h> using namespace Rcpp; // [[Rcpp::export]] int test_null(Nullable<DataFrame> p1 = R_NilValue){ if(p1.isNull()){ NumericMatrix T(2,2); Rcout << T
Rcpp
函数中将参数的默认值设置为NULL
,如果参数不是NULL
,则根据参数进行一些计算。这种代码的一个例子是
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int test_null(Nullable<DataFrame> p1 = R_NilValue){
if(p1.isNull()){
NumericMatrix T(2,2);
Rcout << T << std::endl;
}
else{
NumericMatrix T(p1.nrow());
Rcout << T << std::endl;
}
return (42);
}
#包括
使用名称空间Rcpp;
//[[Rcpp::导出]]
int test_null(可为null的p1=R_null值){
if(p1.isNull()){
数值矩阵T(2,2);
Rcout您非常接近。您错过了一个实例化:aNullable
与它的模板类型还不相同--我们需要先创建一个对象
下面是您的代码,其中包含更正的空格;-)和缺少的行,以及对每种情况的测试调用:
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
int test_null(Nullable<DataFrame> p1 = R_NilValue){
if (p1.isNull()) {
NumericMatrix T(2,2);
Rcout << T << std::endl;
} else {
DataFrame S(p1);
NumericMatrix T(S.nrow());
Rcout << T << std::endl;
}
return (42);
}
/*** R
test_null(NULL)
test_null(data.frame(a=1:3, b=letters[1:3]))
*/
非常感谢@Dirk!是的,我不知道实例化部分,在之前对类似问题的回答中也找不到它。只是为了添加-让您的视频继续播放,我们喜欢它们!这样的代码很棘手。要记录的内容太多了:-/。我记得我们在so I(字面意思)中使用了它看了一个例子。我检查了一下:Rcpp图库中没有任何内容。[但我们几乎肯定在单元测试中会这样做。总是检查这些!]你想回答你的问题(以及几乎完整的答案)吗并在Rcpp图库中适当地提交一些降价?非常感谢视频上的大拇指!感谢单元测试指针。我很想为这个问题提交Rcpp图库!太好了!如果您需要帮助,请告诉我。安装程序比较旧,并且使用了Jekyll。您可以提交一个.Rmd文件,或者,如果您愿意的话呃,一个嵌入了降价的.cpp。很乐意帮忙,也许可以在那里或通过电子邮件戳我一下。请用真名发布(就像你在CRAN软件包中做的一样,我仍然对它印象深刻)。
R> Rcpp::sourceCpp("~/git/stackoverflow/61701367/answer.cpp")
R> test_null(NULL)
0.00000 0.00000
0.00000 0.00000
[1] 42
R> test_null(data.frame(a=1:3, b=letters[1:3]))
0.00000 0.00000 0.00000
0.00000 0.00000 0.00000
0.00000 0.00000 0.00000
[1] 42
R>