NUMERIC_POINTER question
On Tue, 13 Sep 2005, nwew wrote:
Dear R-developers,
Using .Call I pass a S4 class with e.g. the following class definition:
setClass("mmatrix",representation(
data="matrix")
)
On the "C side" i do
mat = GET_SLOT(vs,install("data"));
and then:
printf("%f\n",NUMERIC_POINTER(mat)[1]);
The above print statement produces the correct output if
xx<- new("mmatrix")
xx at data<-matrix(1:12+0.1,3,4). (data is double)
However it prints
0.0000
if xx at data are integers ( xx at data<-matrix(1:12,3,4) ).
Can anyone explain it to me why?
I thought that NUMERIC_POINTER makes it clear that i expect datatype numeric.
(Why otherwise the distinction with INTEGER_POINTER)
No, I think you have to make sure that the bits are in the correct mode. Could you use validation at the new() to do it? A matrix could be double, integer, logical or character at least, but on the C side you only want double. I don't think expectations come into it. Roger
cheers Eryk
______________________________________________ R-devel at r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel
Roger Bivand Economic Geography Section, Department of Economics, Norwegian School of Economics and Business Administration, Helleveien 30, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43 e-mail: Roger.Bivand at nhh.no