[Rcpp-devel] Rcpp::List lost attributes after updating elements
Dirk Eddelbuettel
edd at debian.org
Sun Dec 9 20:25:09 CET 2012
On 9 December 2012 at 14:07, Jiqiang Guo wrote:
| Note in the above, the printout for the second does not print any attribute as
| for the first function.
Hm. That it not desirable so maybe we can do better, but you should also note
that you are using the list type in a suboptimal way by growing piece by
piece which leads to __copies__ being made at which point we may cast to
vector and drop the attributes.
Here is a ever-so-slightlt modified example that works:
-----------------------------------------------------------------------------
#include <Rcpp.h>
// [[Rcpp::export]]
SEXP crtlist3() {
Rcpp::List lst(2); // reserve known size
lst[0] = 10;
lst.attr("att1") = 1;
lst[1] = 20;
return lst;
}
-----------------------------------------------------------------------------
R> sourceCpp("/tmp/jiqiang.cpp")
R> crtlist3()
[[1]]
[1] 10
[[2]]
[1] 20
attr(,"att1")
[1] 1
R>
Essentially I do two things differently: reserve the needed size, and index
by position. The attr then remains.
Dirk
--
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
More information about the Rcpp-devel
mailing list