You have to coerce to numeric yourself if that's what you want. Eg in the R code, as.numeric(1:12) rather than 1:12. Or check the type first in C with TYPEOF before doing NUMERIC_POINTER or INTEGER_POINTER (the difference is that the two do different casts; they both point a fixed offset into the R data structure and I'm not sure if there's a guarantee that this offset needs to be the same, so perhaps the two don't even point to the same location...).
Reid Huntsinger -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of nwew Sent: Tuesday, September 13, 2005 2:26 PM To: r-devel Subject: [Rd] NUMERIC_POINTER question 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") [EMAIL PROTECTED]<-matrix(1:12+0.1,3,4). (data is double) However it prints 0.0000 if [EMAIL PROTECTED] are integers ( [EMAIL PROTECTED]<-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) cheers Eryk ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel