[Rcpp-devel] Default value for Rcpp List

JJ Allaire jj.allaire at gmail.com
Wed Aug 14 14:41:05 CEST 2013


Hi Matteo,

The issue here is that the Rcpp attributes code that parses function
declarations isn't able to parse all syntactic forms of C++ but rather a
subset. The default argument parsing is able to handle scalars, strings,
and simple vector initializations but not more complex expressions like the
one in your example. The warning you get is saying that the default
argument couldn't be parsed as a result of these limitations. The lack of a
default argument definition is then what caused the subsequent error.

Best,

J.J.

On Wed, Aug 14, 2013 at 3:42 AM, Matteo Fasiolo <matteo.fasiolo at gmail.com>wrote:

> Dear Rcpp users,
>
>  a very simple question: I have a function that has a Rcpp::List
> among its arguments, and I would like to set a default values for
> that List.
> Unfortunately this code:
>
> cppFunction(
>   '
>   List myList(List x = List::create(_["a"] = 1, _["b"] = 2))
>  {
>   return x;
>  }
>  '
> )
>
> raises the warning:
>
> Warning message:Unable to parse C++ default value 'List::create(_["a"] = 1, _["b"] = 2)' for argument x of function myList >
> > myList()Error in .Primitive(".Call")(<pointer: 0xb5907fb0>, x) : 'x' is missing
>
>
> Similar code with NumericVector works fine:
>
> cppFunction(
>   '
>   NumericVector myVett(NumericVector x = NumericVector::create(3))
>  {
>   return x;
>  }
>  '
>  )
>
> myVett()
> # [1] 0 0 0
>
> Am I doing something wrong? Thanks!
>
> _______________________________________________
> Rcpp-devel mailing list
> Rcpp-devel at lists.r-forge.r-project.org
> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20130814/98d0333e/attachment.html>


More information about the Rcpp-devel mailing list