RCPP检查列表是否有元素 [英] Rcpp check if list has an element
本文介绍了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屋!
查看全文