Dear all,

I have noticed an issue with preserving attributes (or rather attributes that 
are not preserved). Consider this code where I take the log of an array:

#include <Rcpp.h>
using namespace Rcpp;

//[[Rcpp::export]]
NumericVector fun1(NumericVector x){
  return log( x );
}

//[[Rcpp::export]]
NumericVector fun2(NumericVector x){
  NumericVector out=clone(x), tmp=log(x);
  for (int i=0;i<x.size();++i)out[i] = tmp[i];
  return out;
}

/*** R
x <- HairEyeColor; x
fun1(x)
fun2(x)
 */


> fun1(x)
 [1] 3.4657359 3.9702919 2.3025851 1.0986123 2.3978953 3.9120230 2.3025851 
3.4011974 2.3025851 3.2188758 1.9459101
[12] 1.6094379 1.0986123 2.7080502 1.9459101 2.0794415 3.5835189 4.1896547 
2.7725887 1.3862944 2.1972246 3.5263605
[23] 1.9459101 4.1588831 1.6094379 3.3672958 1.9459101 1.6094379 0.6931472 
2.6390573 1.9459101 2.0794415

> fun2(x)
, , Sex = Male

       Eye
Hair        Brown      Blue     Hazel     Green
  Black 3.4657359 2.3978953 2.3025851 1.0986123
  Brown 3.9702919 3.9120230 3.2188758 2.7080502
  Red   2.3025851 2.3025851 1.9459101 1.9459101
  Blond 1.0986123 3.4011974 1.6094379 2.0794415

, , Sex = Female

       Eye
Hair        Brown      Blue     Hazel     Green
  Black 3.5835189 2.1972246 1.6094379 0.6931472
  Brown 4.1896547 3.5263605 3.3672958 2.6390573
  Red   2.7725887 1.9459101 1.9459101 1.9459101
  Blond 1.3862944 4.1588831 1.6094379 2.0794415

fun2 is kludgy! Is there a more elegant way of preserving attributes using Rcpp 
sugar? 

All the best
Søren



_______________________________________________
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

Reply via email to