[Rcpp-devel] Limit of 20 on length of Rcpp::List::create?
Michael Hannon
jm_hannon at yahoo.com
Tue Nov 1 21:32:57 CET 2011
Greetings. It appears that there is a limit of 20 items in a list created by;
Rcpp::List:create
I.e., the appended code works as expected if I omit all references to "x21",
but fails with an error (shown below, after the code example) when I include
"x21". (The successful output shown below is, obviously, for the case in
which "x21" was NOT included.)
A workaround appears to be just to pack the items into sublists and return the
sublists. I just want to be sure I've understood correctly.
Thanks,
-- Mike
#+BABEL: :session *R* :cache yes :results output verbatim :exports both :tangle yes
* Return a long list
#+begin_src R
library(Rcpp)
library(inline)
includes = '
'
ccode = '
int x1 (1);
int x2 (2);
int x3 (3);
int x4 (4);
int x5 (5);
int x6 (6);
int x7 (7);
int x8 (8);
int x9 (9);
int x10 (10);
int x11 (11);
int x12 (12);
int x13 (13);
int x14 (14);
int x15 (15);
int x16 (16);
int x17 (17);
int x18 (18);
int x19 (19);
int x20 (20);
int x21 (21);
return (Rcpp::List::create(
Rcpp::Named("x1") = x1,
Rcpp::Named("x2") = x2,
Rcpp::Named("x3") = x3,
Rcpp::Named("x4") = x4,
Rcpp::Named("x5") = x5,
Rcpp::Named("x6") = x6,
Rcpp::Named("x7") = x7,
Rcpp::Named("x8") = x8,
Rcpp::Named("x9") = x9,
Rcpp::Named("x10") = x10,
Rcpp::Named("x11") = x11,
Rcpp::Named("x12") = x12,
Rcpp::Named("x13") = x13,
Rcpp::Named("x14") = x14,
Rcpp::Named("x15") = x15,
Rcpp::Named("x16") = x16,
Rcpp::Named("x17") = x17,
Rcpp::Named("x18") = x18,
Rcpp::Named("x19") = x19,
Rcpp::Named("x20") = x20,
Rcpp::Named("x21") = x21
)
);
'
fn = cxxfunction(
sig = signature(),
body = ccode,
includes = includes,
plugin = "Rcpp")
fn()
#+end_src
#+results[0bbf13bdc92f7b08c3d0922279abf8d31332c7e0]:
#+begin_example
$x1
[1] 1
$x2
[1] 2
$x3
[1] 3
$x4
[1] 4
$x5
[1] 5
$x6
[1] 6
$x7
[1] 7
$x8
[1] 8
$x9
[1] 9
$x10
[1] 10
$x11
[1] 11
$x12
[1] 12
$x13
[1] 13
$x14
[1] 14
$x15
[1] 15
$x16
[1] 16
$x17
[1] 17
$x18
[1] 18
$x19
[1] 19
$x20
[1] 20
#+end_example
-----
Error in compileCode(f, code, language = language, verbose = verbose) :
Compilation ERROR, function(s)/method(s) not created! file1a507fc6.cpp: In
function ‘SEXPREC* file1a507fc6()’:
file1a507fc6.cpp:76:17: error: no matching function for call to
‘Rcpp::Vector<19>::create(Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>,
Rcpp::traits::named_object<int>, Rcpp::traits::named_object<int>)’
file1a507fc6.cpp:76:17: note: candidates are:
/usr/lib64/R/library/Rcpp/include/Rcpp/ve
In addition: Warning message:
running command '/usr/lib64/R/bin/R CMD SHLIB file1a507fc6.cpp 2>
file1a507fc6.cpp.err.txt' had status 1
------
> sessionInfo()
R version 2.13.1 (2011-07-08)
Platform: x86_64-redhat-linux-gnu (64-bit)
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C LC_TIME=en_US.UTF-8
[4] LC_COLLATE=en_US.UTF-8 LC_MONETARY=C
LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C LC_ADDRESS=C
[10] LC_TELEPHONE=C LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices datasets utils methods base
>
More information about the Rcpp-devel
mailing list