RCPP检查列表是否有元素 [英] Rcpp check if list has an element

查看:24
本文介绍了RCPP检查列表是否有元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

接下来,使用args作为参数在R中调用正确的函数(我的程序)。

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
  }
}

我找不到任何用于列表的API,也找不到如何执行此操作的示例。此外,我研究了RCPP的头部,但typedef Vector<VECSXP> List ;列表的定义几乎没有帮助。

有什么可以替代list.contains()的吗?

推荐答案

您可能正在寻找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

这篇关于RCPP检查列表是否有元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆