如何使用 Rcpp 创建具有属性的列表

SeG*_*eGa 0 r rcpp

是否可以使用 Rcpp 创建具有属性的列表?如果是这样,如何?

我需要这样一个shinyTree包列表,它需要这种结构,而我的 R 代码很慢,因为我需要几个嵌套循环来遍历所有列表级别。

这是我需要的结构:

list(Name1 = structure("", type = "root", sticon = "fa-icon", stclass = "color"))
Run Code Online (Sandbox Code Playgroud)
$Name1
[1] ""
attr(,"type")
[1] "root"
attr(,"sticon")
[1] "fa-icon"
attr(,"stclass")
[1] "color"
Run Code Online (Sandbox Code Playgroud)

Dir*_*tel 5

有关更多示例,请参阅Rcpp 图库,但这里有一个快速示例:

代码

#include <Rcpp.h>

// [[Rcpp::export]]
Rcpp::List quickdemo() {
  Rcpp::CharacterVector v = Rcpp::CharacterVector::create("");
  v.attr("type") = "root";
  v.attr("sticon") = "fa-icon";
  v.attr("stclass") = "color";
  return Rcpp::List::create(Rcpp::Named("Name1") = v);
}

/*** R
quickdemo()
*/
Run Code Online (Sandbox Code Playgroud)

输出

R> Rcpp::sourceCpp("~/git/stackoverflow/54693381/answer.cpp")

R> quickdemo()
$Name1
[1] ""
attr(,"type")
[1] "root"
attr(,"sticon")
[1] "fa-icon"
attr(,"stclass")
[1] "color"

R>
Run Code Online (Sandbox Code Playgroud)