Вопрос
В пакете R как мне вернуть Rcpp::List
в C
функцию?
Пример
У меня есть пакет, размещенный на моей странице github , чтобы проиллюстрировать это требование.
Он содержит функцию R
, которая вызывает функцию C
, которую я хотел бы вызвать функцией C++
для получения списка.
R
#' @useDynLib crcpp c_ask_for_list
r_ask_for_list <- function() {
.Call(c_ask_for_list)
}
C
#include <Rinternals.h>
SEXP c_ask_for_list (){
SEXP l = PROTECT(allocVector(VECSXP, 1));
//l = rcpp_create_list(); // Call the C++ function to create the list
UNPROTECT(1);
return(l);
}
C ++
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
extern "C" SEXP rcpp_create_list() {
Rcpp::List l(1);
l[0] = "foo";
return l;
}
Если я раскомментирую строку l = rcpp_create_list()
в функции C
, программа вылетает.