[Rcpp-devel] Accessing list of list members to permute them

ogami musashi uragami at hotmail.com
Mon Mar 30 11:05:53 CEST 2015


Hello

I'm a Rcpp newbie, so sorry if the question is trivial.

I have an R object which is a list of 1000 elements. Each elements is a 
result from a discrete wavelet transform (from package wmtsa) with 5 
elements. One of them have a 50000 rows and 16 colums.

The first level (1000) are in fact random signals of 50 000 days. On 
each of them i ran a DWT that separated each signal into 16 components 
(of decreasing frequency) for each day thus resulting in a 50000 days * 
16 components matrix for each of the 1000 signals.

I would like to sort it like that: for each component (a list of 16 
elements) having for each day (50000 rows) the 1000 signals (1000 columns)


here are the objects in R:

dwtlist: 1000 elements * 5 elements* (50000*16) matrix
sortdwtlist:16 elements*(50000*1000) matrix

the code in R:

for(i in 1:16){

     for(j in 1:50000){

         for (k in 1:1000){

             sortdwtlist[[i]][j,k]<-dwtlist[[k]][[1]][j,i]
}
}
}


This takes about 27 minutes to complete.

I thus tried to put in C++ using Rcpp (i'm using sourceCpp):

#include <Rcpp.h>
using namespace Rcpp;

// [[Rcpp::export]]

List rearrangelist(List x){
     int ni=15;
     int nj=49999;
     int nk=999;
     List output;

for (int i= 0 ; i<ni ; i++){
     for (int j=0 ; j<nj ; j++) {
         for (int k=0 ; j<nk ; k++){
             output[i](j,k)=x[k][0](j,i);
         }
     }
}
return output;
}


But it doesn't work. error stops at the line of permutation, so i'm sure 
there's something with the types inside the list.
Can someone help me?

Thank you!





More information about the Rcpp-devel mailing list