[Rcpp-devel] pass an R list as an argument and accessing elements of a list
Dirk Eddelbuettel
edd at debian.org
Fri Oct 8 13:32:15 CEST 2010
Hi Vinh,
On 7 October 2010 at 21:41, Vinh Nguyen wrote:
| I'll pass the R list as an SEXP object and then use Rcpp to access that list:
| extern "C" SEXP MyCppFunc(..., SEXP _list){
| ...
| Rcpp::List list(_list) ;
| ...
| }
|
| Is the above the proper way to pass a list the Rcpp way? I've
Yes it is. There are working examples in other packages where these
Rcpp::List are used to pass a (large) number of variables.
| used Rcpp::List::create but haven't done passing a list as an
| argument.
|
| To access the elements of the list, can I access them as list["x"],
| list["y"], and list["z"], just like the Rcpp::NumericVector case?
Absolutely.
| Don't think I saw accessing lists in the vignettes.
|
| When I pass the Rcpp::List into the optim function, is this the
| correct way to pass it:
|
| void optim(..., Rcpp::List list){
| ...
| // do stuff with list, such as list["x"].
| ...
| }
You may want to make that a reference:
void optim(..., Rcpp::List & list){
or a const reference:
void optim(..., const Rcpp::List & list){
for greater efficiency. [ The const case every now and then reveals a
accessor functions, let us know when you get errors. ]
Cheers, Dirk
--
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
More information about the Rcpp-devel
mailing list