【问题标题】:Rcpp check if list has an elementrcpp 检查列表是否有元素
【发布时间】:2018-10-06 16:31:08
【问题描述】:

我的程序处理聚类。除了数据集,用户还必须指定一些关于集群的细节。有两种方法可以解决这个问题:指定集群的数量或准备集群的描述列表。

args <- list(dataset=points, K=5)
args <- list(dataset=points, clusters=list(
                             list(type="spherical",radius=4),
                             list(type="covariance",covMat=matrix)
                                          )

接下来你在 R 中调用适当的函数(我的程序),并使用 args 作为参数。

classification <- CEC(args)

我想像下面这样准备 CEC

SEXP CEC(SEXP args) {
  Rcpp::List list(args);
  arma::mat dataset = Rcpp::as<arma::mat>(list["dataset"]);
  if(list.contains("K")) {
    //something
  } else if(list.contains("clusters")) {
    //something
  }
}

我找不到 List 的任何 API 或示例如何做到这一点。此外,我研究了 Rcpp 的标头,但 typedef Vector&lt;VECSXP&gt; List ; 的 List 的定义几乎没有帮助。

我可以用什么来代替list.contains() 吗?

【问题讨论】:

    标签: rcpp


    【解决方案1】:

    您可能正在寻找containsElementNamed 方法:

    Rcpp::List list(args);
    if( list.containsElementNamed("K") ){
        // something
    } else {
        // something else
    }
    

    https://github.com/RcppCore/Rcpp/blob/master/inst/include/Rcpp/vector/Vector.h#L584

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 2021-12-17
      相关资源
      最近更新 更多