【发布时间】:2018-06-29 22:45:31
【问题描述】:
我正在使用 Rcpp 包,并且可以让我的 C 函数在 R 中编译和运行,但现在我想向 R 返回一个用户定义的大型数据结构。结构中的字段是数字或字符串 - 没有新的或结构中的奇数类型。下面的示例已简化并且无法编译,但它传达了我的问题的想法。
typedef struct {
char* firstname[128];
char* lastname[128];
int nbrOfSamples;
} HEADER_INFO;
// [[Rcpp::export]]
HEADER_INFO* read_header(Rcpp::StringVector strings) {
FILE *fp;
MEF_HEADER_INFO *header;
char * filename = (char*)(strings(0));
char * password = (char*)(strings(1));
header = (HEADER_INFO*)malloc(sizeof(HEADER_INFO));
memset(header, 0, sizeof(HEADER_INFO));
fp = fopen(filename, "r");
(void)read_header(header, password);
return header;
}
我很确定我可以将标头中的条目打包回 StringVector,但这似乎是一种蛮力方法。我的问题是是否存在更优雅的解决方案。我不清楚这种结构在 R 中会有什么形式:命名列表?
谢谢!
【问题讨论】:
-
c.f.在 Rcpp 库@gallery.rcpp.org/articles/…gallery.rcpp.org/articles/… 上的 Rcpp 中自定义模板化和包装函数
-
BTW 它被称为 'Rcpp' 所以 cpp 是小写的。它有文档,包括专门针对这个(不是微不足道但很重要)主题的整个小插曲。总之,你需要写转换器。
-
偶然我今天早上看到您发布了一个附加问题作为“答案”,现在已经消失了。如果它被删除为“不是答案”:发布新问题或edit您的问题以添加“奖励”材料。顺便说一句,您发布的示例由于各种原因无法编译。请尝试制作无需修改即可运行的示例。这不仅可以帮助我们帮助您,还可以帮助您隔离问题。尝试构建 MWE 时,通常可以解决问题。
标签: rcpp