[Rcpp-devel] type mismatch between NumericMatrix and IntegerMatrix
In the latter case the integer matrix is "converted" to a numeric matrix via a copy which is why your modification doesn't work. That said, modifying an object in place violates R's language semantics and could lead to incorrect computations (i.e. users expect that objects are immutable and this is part of what ensures the integrity of computations) so this is strongly discouraged. On Sun, Aug 7, 2016 at 7:00 AM, Kaspar M?rtens <kaspar.martens at gmail.com> wrote:
Hi,
When experimenting with the following toy function,
// [[Rcpp::export]]
void modify_matrix(NumericMatrix A){
A(0, 0) = 5;
}
and applying this on matrices defined in R, I occasionally noticed
unexpected behaviour (as it turns out, on integer matrices).
### Example 1 (works as expected)
A = matrix(0, 2, 2)
modify_matrix(A)
A
## [,1] [,2]
## [1,] 5 0
## [2,] 0 0
### Example 2 (does not modify the matrix)
A = matrix(1:4, 2, 2)
modify_matrix(A)
A
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
I realised that in the latter case, A consists of integers, so I guess I
should be using an IntegerMatrix version of my function instead. However,
shouldn't Rcpp detect the type mismatch between NumericMatrix and
IntegerMatrix?
Best,
Kaspar
_______________________________________________ Rcpp-devel mailing list Rcpp-devel at lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20160807/44d0d180/attachment.html>