在Rcpp中迭代命名列表

3

I have a named list in R:

l = list(a=1, b=2)

我希望在Rcpp中使用该列表,并迭代值和名称。理想情况下,可以像这样实现(为了简洁起见,使用C++11格式):
void print_list (List l)
    for (pair < String, int > &p: l)
        cout << p.first << ": " << p.second;

有没有一种方法可以实现它(即使使用纯C ++)?
1个回答

4
许多这些用例实际上在单元测试中是可见的。
在这里,我从 tinytest/cpp/Vector.cpp 中引用:

获取名称:

// [[Rcpp::export]]
CharacterVector integer_names_get( IntegerVector y ){
    return y.names() ;
}

按名称索引

// [[Rcpp::export]]
int integer_names_indexing( IntegerVector y ){
    return y["foo"] ;
}

那应该足以让你获取所需迭代的向量。

您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - unamourdeswann
你知道可以通过位置(即索引)迭代遍历每个向量吗? - Dirk Eddelbuettel
1
抱歉,我不理解这个评论(我的英语不太好)。你的意思是“你明白可以通过位置即索引迭代每个向量吗?” 你的意思是这样的:for (int i=0; i<l.size();i++) cout << l.names()[i] << ": " << l[i]; - unamourdeswann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接