[Rcpp-devel] Help with SubMatrix test case

Dirk Eddelbuettel edd at debian.org
Sat Dec 4 04:56:33 CET 2010


On 3 December 2010 at 19:45, Christian Gunning wrote:
| In this test case, I expected yy to be a proper subset of xx.  I
| confess that I don't understand the results at all, but I'm assuming
| that the Row/Column exchange is involved. Am I missing anything?
| 
| thanks,
| christian
| 
| src <- '
|      NumericMatrix xx(4, 5);
|      xx(0,0) = 3;
|      xx(0,1) = 4;
|      xx(0,2) = 5;
|        Rf_PrintValue(xx);
|      xx(1,_) = xx(0,_);
|        Rf_PrintValue(xx);
|      xx(_,3) = xx(_,2);
|        Rf_PrintValue(xx);
|      SubMatrix<REALSXP> yy = xx( Range(0,2), Range(0,3) ) ;
|        Rf_PrintValue(wrap(yy));
|      return(wrap(yy));
|  '
| 
| myfun <- cxxfunction( , src, plugin='Rcpp')
| 
| aa = myfun()

That is pretty new code.  Let's give it a while.  I get

R> library(Rcpp)
R> library(inline)
R> src <- '
     NumericMatrix xx(4, 5);
+ +      xx(0,0) = 3;
+      xx(0,1) = 4;
+      xx(0,2) = 5;
+        Rf_PrintValue(xx);
+      xx(1,_) = xx(0,_);
+        Rf_PrintValue(xx);
+      xx(_,3) = xx(_,2);
+        Rf_PrintValue(xx);
+      SubMatrix<REALSXP> yy = xx( Range(0,2), Range(0,3) ) ;
+        Rf_PrintValue(wrap(yy));
+      return(wrap(yy));
+  '
R> myfun <- cxxfunction( , src, plugin='Rcpp')
R> aa = myfun()
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    4    5    0    0
[2,]    0    0    0    0    0
[3,]    0    0    0    0    0
[4,]    0    0    0    0    0
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    4    5    0    0
[2,]    3    4    5    0    0
[3,]    0    0    0    0    0
[4,]    0    0    0    0    0
     [,1] [,2] [,3] [,4] [,5]
[1,]    3    4    5    5    0
[2,]    3    4    5    5    0
[3,]    0    0    0    0    0
[4,]    0    0    0    0    0
     [,1] [,2] [,3] [,4]
[1,]    3    4    0    0
[2,]    3    0    0    0
[3,]    0    0    5    0
R> 

The first three look correct to me:
i)   assign 3, 4, 5
ii)  copy row 0 as 1
iii) copy col 3 to 4

but I am also a little puzzled by the last submatrix.  

I'm sure Romain will weigh in in a few hours.

Dirk

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list