为Rcpp函数中的参数设置`NULL'默认值

问题描述 投票:3回答:1

我想在NULL函数中将参数的默认值设置为Rcpp,如果参数不是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);
}

但是,我无法编译此功能,并收到错误消息

error: no member named 'nrow' in 'Rcpp::Nullable<Rcpp::DataFrame_Impl<PreserveStorage> >'

这告诉我没有为nrow定义Nullable DataFrame。是否有其他方法可以为NULL中的参数(即DataFrame)实现默认的Rcpp值,以便我可以计算DataFrame的其他属性(编号,行,列等) ],而不是NULL

任何帮助将不胜感激!

谢谢!

SN248

rcpp
1个回答
5
投票

你非常亲密。您错过了一个实例化:Nullable<>与其模板类型还不相同-我们需要首先创建一个对象。

所以这是您的代码,其中包含正确的空格;-)以及缺少的行以及每种情况的测试调用:

© www.soinside.com 2019 - 2024. All rights reserved.