如何在Rcpp中使用R“列表列表”对象?

时间:2018-02-07 20:05:38

标签: r list rcpp

我有一个包含300个元素的R嵌套列表对象(称为 Rlist ),每个元素都包含一个“内部列表”,其中包含1-100个元素。我想将 Rlist 传递给我在Rcpp中编写的函数,但是我无法弄清楚如何在Rcpp中提取内部列表。

如何将 Rlist 传递给我的Rcpp功能?特别是,假设我想访问第10个内部列表对象中的所有元素。我怎样才能做到这一点?我尝试将 Rlist 作为“List”对象传递给Rcpp,然后尝试了 Rlist(9),但这并没有给我我想要的东西。

由于

1 个答案:

答案 0 :(得分:2)

没有魔力。只需使用列表访问方法即可访问列表。

代码

#include <Rcpp.h>

// [[Rcpp::export]]
double accessLOL(Rcpp::List l) {
  Rcpp::List l2 = l["outer"];
  Rcpp::List l3 = l2["middle"];
  Rcpp::List l4 = l3["inner"];
  return l4["value"];
}

/*** R
li <- list(value=42)
lm <- list(inner=li)
lo <- list(middle=lm)
l <- list(outer=lo)
accessLOL(l)
*/

演示

R> Rcpp::sourceCpp("/tmp/lolol.cpp")

R> li <- list(value=42)

R> lm <- list(inner=li)

R> lo <- list(middle=lm)

R> l <- list(outer=lo)

R> accessLOL(l)
[1] 42
R>