On Tue, Nov 1, 2011 at 3:32 PM, Michael Hannon <jm_han...@yahoo.com> wrote: > > > 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.
Or go into Rcpp/inst/include/Rcpp/generated/vector__create.h and extend the limit of 20. In most cases if your list is getting very long you might want to consider another data structure or using something other than the ::create method for the List class to create your list. The ::create method is a convenience construction to be able to quickly generate a List or other type of Vector (in the Rcpp sense) object, including assigning names. It would be unusual to hard-code a call to List::create with more than 20 elements. > 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 >> > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel