Creating a NumericVector with more than 20 elements leads to error messages. This is in agreement with this document (at the very bottom): http://statr.me/rcpp-note/api/Vec
Bob already showed you that a) you mistakenly took the constraint on the macro-defined create()
helper to be binding, and b) how to do this via the inline package and loops.
Here is an alternate solution using Rcpp Attribute. Copy the following to a file, say, /tmp/named.cpp
:
#include
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector makevec(CharacterVector nm) {
NumericVector v(nm.size());
v = Range(1, nm.size());
v.attr("names") = nm;
return v;
}
/*** R
makevec(LETTERS)
makevec(letters[1:10])
*/
Simply calling sourceCpp("/tmp/named.cpp")
will compile, link, load and also execute the R illustration at the bottom:
R> sourceCpp("/tmp/named.cpp")
R> makevec(LETTERS)
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
R> makevec(letters[1:10])
a b c d e f g h i j
1 2 3 4 5 6 7 8 9 10
R>